跨域出现的原因:
1.域名不同
2.端口不同
3.二级域名不同
4.协议不同 http,https
跨域问题只针对ajax请求,ajax请求的路径与当前页面的路径不同 ,防止跨站攻击
解决方法
1.jsonp 缺点:只能解决get请求
2.nginx 反向代理 缺点:额外配置,不符合devops(开发运维)思想
3.cors 缺点:多发请求(预检疫请求)
cors:跨域资源共享
ajax 底层 XMLHttpRequest
简单请求 head get post
特殊请求 put 会先发送一个预检疫请求,判断路径访问是否成功
使用cors解决
在gateway中配置
@Configuration
public class WtcCorsConfiguration {
@Bean
//重写过滤器方法
public CorsFilter corsFilter(){
//初始化配置
CorsConfiguration corsConfiguration = new CorsConfiguration();
//如果携带cookie不能为*
//一般为申请的域名
corsConfiguration.addAllowedOrigin("*");
//是否允许携带cookie
corsConfiguration.setAllowCredentials(false);
//允许所有请求方法
corsConfiguration.addAllowedMethod("*");
//允许携带任何请求头
corsConfiguration.addAllowedHeader("*");
//初始化配置源
UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
}
}
网友评论