如CORS preflight request fails due to a standard header中所述,如果您使用Origin和Access-Control-Request-Method标头设置向OPTIONS端点发送请求,那么它们将被Spring框架拦截,并且您的方法不会被执行.接受的解决方案是使用@CrossOrigin注释来阻止Spring返回403.但是,我使用Swagger Codegen生成我的API代码,所以我只想禁用它并手动实现我的OPTIONS响应.
那么你可以在Spring中禁用CORS拦截吗?
最佳答案
从他们documentation:
原文链接:https://www.f2er.com/spring/431884.html如果您使用的是Spring Web MVC
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("HEAD","GET","PUT","POST","DELETE","PATCH");
}
}
如果您使用的是Spring Boot:
@Configuration
public class MyConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("HEAD","PATCH");
}
};
}
}
Yuriy Yunikov的回答也是正确的.但我不喜欢“自定义”过滤器.
万一你有Spring Web Security导致麻烦.检查this SO答案.