SpringSecurity 的跨域配置

  |   0 评论   |   0 浏览

最近在又在搞前后端分离的时候,遇到了常见的跨域问题,本以为花个几分钟配置一下就解决了的(因为之前配置过),但在实际操作的时候遇到了诸多问题,这里记录一下。

一开始,从网上随便搜了一下(好久之前配的,具体代码忘记了),没配置成功。最后决定到官网上查看

地址如下: https://docs.spring.io/spring-security/site/docs/5.4.5/reference/html5/#cors

image.png

官网上说,通过配置一个 CosConfigurationSource 类型的bean,就能解决问题。

我把官网上的代码复制,然后配置如下

 @Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("*"));
        configuration.setAllowedMethods(Arrays.asList("GET","POST","DELETE","PUT"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

但是发现怎么都没有效果,而且网上说都是这么配的,也没找出问题在哪里。如哽在吼,最后看了下源代码。

image.png

发现如果不配置 allowHeaders 会返回 false。最后修改配置,解决

@Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("*"));
        configuration.setAllowedMethods(Arrays.asList("GET","POST","DELETE","PUT"));
        configuration.setAllowedHeaders(Arrays.asList("*"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

标题:SpringSecurity 的跨域配置
作者:zh847707713
地址:http://lovehao.cn/articles/2021/03/11/1615434492037.html