CORS (Cross-Origin Resource Sharing) :跨域资源共享
同源策略 [same origin policy] : 是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。 同源策略是浏览器安全的基石。
CorsWebFilter进行全局跨域配置
@Configuration
public class GulimallCorsConfiguration {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 允许哪个 源 访问 协议://IP:端口 一致即为同源 eg: http://www.baidu.com:80
corsConfiguration.addAllowedOrigin("*");
// 允许携带哪些头信息
corsConfiguration.addAllowedHeader("*");
// 允许暴露哪些头信息给客户端 必须各个具体的一些头部信息都添加进去而不能用*号来代替
// error: corsConfiguration.addExposedHeader("*");
// Caused by: java.lang.IllegalArgumentException: '*' is not a valid exposed header value
corsConfiguration.addExposedHeader("Content-Type");
corsConfiguration.addExposedHeader( "X-Requested-With");
corsConfiguration.addExposedHeader("accept");
corsConfiguration.addExposedHeader("Origin");
corsConfiguration.addExposedHeader( "Access-Control-Request-Method");
corsConfiguration.addExposedHeader("Access-Control-Request-Headers");
// 允许哪些请求方法 GET POST PUT DELETE
corsConfiguration.addAllowedMethod("*");
// 是否允许携带cookie
corsConfiguration.setAllowCredentials(true);
// 哪些路径对以上配置生效 /** 代表全部
source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
}
参考:
https://blog.51cto.com/u_14482423/2986315
https://www.cnblogs.com/deityjian/p/11515275.html
https://www.cnblogs.com/yuansc/p/9076604.html