如何在SpringBoot中禁用SpringSecurity中的cors?

pb3skfrl  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(357)

我想用springsecurity从springboot(2.3.3.release)中完全删除cors。
WebSecurityConfigurerAdapter#configure 方法 HttpSecurity 我可以呼叫的对象 cors().disable() 但似乎不起作用。

class MySecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().disable();
    }
}

使用上面的代码片段,我在从前端应用程序访问端点时仍然会遇到cors错误。
相反,我必须重写 addCorsMappingsWebMvcConfigurer 界面如下?。
为什么?为什么打电话还不够 http.cors().disable() ?

class MySecurityConfiguration extends WebSecurityConfigurerAdapter implements WebMvcConfigurer {

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

oyxsuwqo1#

嗨,您需要在spring boot项目中创建一个全局cors配置。创建一个类并用@configuration注解它。您可以遵循下面的示例。

@Configuration
public class MyConfiguration {

 @Bean
 public WebMvcConfigurer corsConfigurer() {
     return new WebMvcConfigurerAdapter() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
             registry.addMapping("/api/**")
               .allowedOrigins("http://domain2.com")
               .allowedMethods("PUT", "DELETE")
               .allowedHeaders("header1", "header2", "header3")
               .exposedHeaders("header1", "header2")
               .allowCredentials(false).maxAge(3600);
       }
    };
  }
}

下面是spring框架提供的完整指南https://spring.io/blog/2015/06/08/cors-support-in-spring-framework

相关问题