【发布时间】:2021-03-01 18:19:27
【问题描述】:
使用 Spring 2.3.0.RELEASE 我得到了以下 CORS 确认:
@Configuration
@EnableWebSecurity
@ComponentScan("com.softeq.ems.config")
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class EmsJwtSecurityConfig extends BaseSecurityConfig {
@Value("${management.endpoints.web.cors.allowed-origins}")
private String[] allowedOrigins;
@Override
protected void configureHttp(HttpSecurity http) throws Exception {
if (allowedOrigins.length > 0) {
http.cors().configurationSource(corsConfigSource());
}
http.csrf().disable();
}
private CorsConfigurationSource corsConfigSource() {
final CorsConfiguration corsConfig = new CorsConfiguration();
corsConfig.addAllowedHeader(CorsConfiguration.ALL);
corsConfig.addAllowedMethod(CorsConfiguration.ALL);
Stream.of(allowedOrigins).forEach(
origin -> corsConfig.addAllowedOrigin(origin)
);
return request -> corsConfig;
}
变量management.endpoints.web.cors.allowed-origins = http://localhost:4200, http://127.0.0.1:4200
此配置运行良好,我需要的所有跨平台请求都已获得授权。
但是在发布后迁移到spring-boot 2.4.0后,当我尝试像往常一样向主机发送请求时,在chrome浏览器控制台中遇到了经典的cors policy错误:
Access to XMLHttpRequest at 'http://localhost:8080/api/v1/me/balance' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status
Spring 发布说明说 cors 配置提供了一个新属性 allowedOriginPatterns,但我不明白如何使用它:
https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Framework-5.x#general-web-revision
请帮我弄清楚我的问题是什么!
【问题讨论】:
标签: java spring spring-boot cors