ajax跨域访问header带token
headers : {
"token" : localStorage.getItem("tft_user_token")
},
在请求头上加入token后,跨域请求被拦截!注释掉header后,跨域请求成功,但是我们的要求是要用token做验证,所以header的token不能注释,那怎么办呢?
不急,SpringSecurity有配置支持带token的跨域访问,解决方案:
//在 protected void configure(HttpSecurity http)配置中添加下面这行代码:
http.cors().configurationSource(CorsConfigurationSource());
//配置跨域访问资源
private CorsConfigurationSource CorsConfigurationSource() {
CorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*"); //同源配置,*表示任何请求都视为同源,若需指定ip和端口可以改为如“localhost:8080”,多个以“,”分隔;
corsConfiguration.addAllowedHeader("*");//header,允许哪些header,本案中使用的是token,此处可将*替换为token;
corsConfiguration.addAllowedMethod("*"); //允许的请求方法,PSOT、GET等
((UrlBasedCorsConfigurationSource) source).registerCorsConfiguration("/**",corsConfiguration); //配置允许跨域访问的url
return source;
}
经过上面配置后,带token的跨域访问完美解决