spring-security Spring CorsFilter CorsConfiguration允许多个来源

nuypyhwy  于 2022-11-11  发布在  Spring
关注(0)|答案(2)|浏览(140)

我在Spring项目中工作,我想允许多个源调用我的backen API。到目前为止,我的配置只适用于一个源。这是我的代码:

@Bean
  public CorsFilter corsFilter() {

    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();

    config.addAllowedOriginPattern("myoriginone");
    config.addAllowedHeader("*");
    config.addAllowedMethod("*");
    source.registerCorsConfiguration("/**", config);
    return new CorsFilter(source);
  }

你知道我是如何允许多个源的吗?比如“host1”,“host2”..因为addAllowedOriginPattern()方法只接受一个字符串参数。
祝你好运

utugiqy6

utugiqy61#

如果您看到文档,则allowedOrigins是一个数组。

@Nullable
private List<String> allowedOrigins;

并且下面的方法正在设置允许的Origins。显然,您可以多次调用该方法来添加不同的Origins。

/**
     * Add an origin to allow.
     */
    public void addAllowedOrigin(String origin) {
        if (this.allowedOrigins == null) {
            this.allowedOrigins = new ArrayList<>(4);
        }
        else if (this.allowedOrigins == DEFAULT_PERMIT_ALL) {
            setAllowedOrigins(DEFAULT_PERMIT_ALL);
        }
        this.allowedOrigins.add(origin);
    }

请使用以下

public void setAllowedOrigins(@Nullable List<String> allowedOrigins) {
        this.allowedOrigins = (allowedOrigins != null ? new ArrayList<>(allowedOrigins) : null);
    }
eiee3dmh

eiee3dmh2#

环境变量是更好的做法。要添加多个原点,请将变量放在application.properties文件中

regions=http://localhost:8080, http://localhost:8081, http://a.b.c.d, http://localhost:9000

创建如下所示的全局变量

@Value("${regions}")
private String[] allowedOrigins;

现在把这个叫做

@Override
 public void addCorsMappings(CorsRegistry registry)
 {
     registry.addMapping("/**").allowedOrigins(allowedOrigins);
 }

相关问题