在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
本文介绍了在SpringBoot中使用@CrossOrigin与引入SpringSecurity后如何配置CORS,以及如何在SecurityConfig中重新设置允许跨域策略,同时提供前端axios跨域示例和参考链接。
1011

被折叠的 条评论
为什么被折叠?



