你能在春天完全禁用CORS支持吗?

2022-09-01 00:43:01

CORS 预检请求中所述,如果将请求发送到设置了 和 标头的终结点,则由于标准标头而失败,则这些请求将被 Spring 框架截获,并且您的方法不会执行。公认的解决方案是使用注释来阻止Spring返回.但是,我正在使用Swagger Codegen生成我的API代码,因此我只想禁用此功能并手动实现我的响应。OPTIONSOriginAccess-Control-Request-Method@CrossOrigin403OPTIONS

那么,是否可以在春季禁用 CORS 拦截?


答案 1

对于较新版本的弹簧靴:

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedMethods("*");
    }
}

科特林方式

@Configuration
class WebConfiguration : WebMvcConfigurer {
    override fun addCorsMappings(registry: CorsRegistry) {
        registry.addMapping("/**").allowedMethods("*")
    }
}

答案 2

从他们的文档

如果您使用的是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", "GET", "PUT", "POST", "DELETE", "PATCH");
            }
        };
    }
}

尤里·尤尼科夫的回答也是正确的。但我不喜欢“自定义”过滤器。

如果你有春天的网络安全,这给你带来麻烦。检查这个SO答案。


推荐