我有一个 Spring Boot 应用程序。在应用程序类中,我像这样定义 CORS 映射:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/lists");
}
};
}
一切都可以使用这个,但是当我想添加一个包含例如的映射时这样的ID
registry.addMapping("/lists/**"); // it also doesn't work with '/lists/*'
,映射不再起作用,并且我在“/lists/142”等 GET 请求上收到“No Access-Control-Allow-Origin Header”错误
如https://spring.io/blog/2015/06/08/cors-support-in-spring-framework所示,我尝试使用“/**”作为映射来允许所有请求端点 URL,但只有端点没有动态值(例如 ID)似乎工作正常。
尝试使用
@CrossOrigin
这可以作为通配符正常工作。
尝试使用
@CrossOrigin(origins = "")
在您的控制器中。
CORS通配符可以在
allowedOriginPatterns
中配置:
@Bean
fun filterChain(http: HttpSecurity): SecurityFilterChain =
http
.cors {
it.configurationSource {
CorsConfiguration().apply {
allowedOriginPatterns = listOf(
"https://a.b*.com",
)
allowedMethods = listOf("*")
allowedHeaders = listOf(ORIGIN, CONTENT_TYPE, ACCEPT, AUTHORIZATION)
allowCredentials = true
}
}
}