SpringSecurity 跨域问题 Cors

在SpringBoot中只需要在Controller上添加@CrossOrigin,而在导入SpringSecurity后将会失效,所以需要我们在SpringSecurity中再进行配置

public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors();
    }

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.addAllowedOrigin("*");
        configuration.addAllowedMethod("*");
        configuration.addAllowedHeader("*");
        configuration.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}

此外,即使我们不配置CorsConfigurationSource而仅仅配置http.cors(),加上SpringBoot的@CrossOrigin,也可以实现除了/login之外的跨域问题.

前端代码

    <script>
        axios.defaults.withCredentials=true;//一定要带登录后,springsecurity自动设定,否则无法访问受限制的网址
        const params = new URLSearchParams();//将Json请求转换为Form请求
        params.append('username', 'admin');
        params.append('password', '123');
        axios.post('http://localhost:8080/login', params)
        .then(res => console.log(res));
    </script>

参考:
https://zhuanlan.zhihu.com/p/95119912
https://www.jianshu.com/p/596157f3c93c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值