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

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

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

  1. @Bean
  2. public CorsFilter corsFilter() {
  3. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
  4. CorsConfiguration config = new CorsConfiguration();
  5. config.addAllowedOriginPattern("myoriginone");
  6. config.addAllowedHeader("*");
  7. config.addAllowedMethod("*");
  8. source.registerCorsConfiguration("/**", config);
  9. return new CorsFilter(source);
  10. }

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

utugiqy6

utugiqy61#

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

  1. @Nullable
  2. private List<String> allowedOrigins;

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

  1. /**
  2. * Add an origin to allow.
  3. */
  4. public void addAllowedOrigin(String origin) {
  5. if (this.allowedOrigins == null) {
  6. this.allowedOrigins = new ArrayList<>(4);
  7. }
  8. else if (this.allowedOrigins == DEFAULT_PERMIT_ALL) {
  9. setAllowedOrigins(DEFAULT_PERMIT_ALL);
  10. }
  11. this.allowedOrigins.add(origin);
  12. }

请使用以下

  1. public void setAllowedOrigins(@Nullable List<String> allowedOrigins) {
  2. this.allowedOrigins = (allowedOrigins != null ? new ArrayList<>(allowedOrigins) : null);
  3. }
展开查看全部
eiee3dmh

eiee3dmh2#

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

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

创建如下所示的全局变量

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

现在把这个叫做

  1. @Override
  2. public void addCorsMappings(CorsRegistry registry)
  3. {
  4. registry.addMapping("/**").allowedOrigins(allowedOrigins);
  5. }

相关问题