我正在尝试为所有子域,端口和协议启用CORS.
例如,我希望能够从http://sub.mywebsite.com:8080/运行XHR请求到https://www.mywebsite.com/*
通常情况下,我想启用匹配(并限于)的来源请求:
//*.mywebsite.com:*/*
我找到了一个关于如何在spring-boot应用程序中设置cors头的示例.由于我们有很多起源,我需要添加它们.以下是否有效?
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://domain1.com")
.allowedOrigins("http://domain2.com")
.allowedOrigins("http://domain3.com")
}
}
Run Code Online (Sandbox Code Playgroud)
我无法测试这个,除非它被三个域使用.但我想确保我设置了三个来源,而且不仅设置了"domain3.com".
编辑:理想的用例是注入域列表(来自application.properties)并在allowedOrigins中设置.可能吗
即
@Value("${domainsList: not configured}")
private List<String> domains;
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins(domains)
}
}
Run Code Online (Sandbox Code Playgroud) 我在使用 spring webFlux 制作的项目中启用了 spring security + CORS。我的问题是我们接受例如来自:http://localhost:4200 的请求。如何让 CORS 接受来自http://*.localhost:4200 的请求, 如http://a.localhost:4200、http://b.localhost:4200?
我的 CORS 配置如下所示:
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public CorsWebFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.setAllowedOrigins(corsConfigData.getAllowedOrigins());
config.setAllowedHeaders(corsConfigData.getAllowedHeaders());
config.setAllowedMethods(corsConfigData.getAllowedMethods());
source.registerCorsConfiguration("/**", config);
return new CorsWebFilter(source);
}
Run Code Online (Sandbox Code Playgroud)
你有什么想法 ???