跨域问题
相信大家在做前后端分离项目时,跨域问题是不可避免的,在我们后端采用SpringBoot后可以在SpringMvc的配置类中增加以下配置即可避免跨域问题:
@Configuration
public class Config implements WebMvcConfigurer {
public CorsConfiguration buildConfig(){
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("*"); //允许任何域名
config.addAllowedHeader("*"); //允许任何头
config.addAllowedMethod("*"); //允许任何方法
config.addAllowedOrigin("*");
config.setMaxAge(Duration.ofDays(30)); //设置30天之内不在发送OPTIONS预请求
return config;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
}
然而在我加入SpringSecurity想对项目进行安全性的补充时,发现上面的配置类失效了,想了一会,原来是SpringSecurity自动将所有请求拦截下来了,自然之前的配置类也就失效了,因此我们可以保留上面的配置类,在自己编写的SpringSecurity的继承与于WebSecurityConfigurerAdapter的WebConfig下加入
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.csrf().disable()
.addFilter(loginFilter())
;
}
即cors,开启SpringSecurity对CORS的支持即可