springboot开启跨域security也开启跨域配置

与f / 2023-05-19 / 原文

springboot开启跨域security也开启跨域配置

浏览器 同源策略,导致跨域失败,添加了security框架后,因为安全框架有一些列的过滤器,即使springboot把跨域打开,security的过滤器也可以能拦截。

所以,如果要在服务器端设置,要改两处

 

方法一:

先开放springboot的跨域

 

再开启security的跨域

 

 

 方法二: (待验证)

这种方式好像没有管springboot的配置

@Configuration
public class ResourcesConfig implements WebMvcConfigurer
{

    /**
     * 跨域配置
     */
    @Bean
    public CorsFilter corsFilter()
    {
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        // 设置访问源地址
        config.addAllowedOriginPattern("*");
        // 设置访问源请求头
        config.addAllowedHeader("*");
        // 设置访问源请求方法
        config.addAllowedMethod("*");
        // 有效期 1800秒
        config.setMaxAge(1800L);
        // 添加映射路径,拦截一切请求
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);
        // 返回新的CorsFilter
        return new CorsFilter(source);
    }


}

spring security配置

    /**
     * 跨域过滤器
     */
    @Autowired
    private CorsFilter corsFilter;


        // 添加CORS filter
    httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class);
    httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class);

 

 

 

 

 

 

转 :https://www.bilibili.com/video/BV1mm4y1X7Hc