1.什么是跨域请求?
跨域,跨端口都是跨域请求
2.解决办法
前台不需要设置,后台设置就行
if(request.getHeader("Origin")!=null) {
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
}else {
response.setHeader("Access-Control-Allow-Origin", "*");
}
response.addHeader("Access-Control-Allow-Methods", "POST,GET,TRACE,OPTIONS");
response.addHeader("Access-Control-Allow-Headers", "Content-Type,Origin");
//response.addHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Max-Age", "120");
return true;
Access-Control-Allow-Origin:* //允许源
Access-Control-Allow-Methods: //允许方法
Access-Control-Max-Age:// 设置最大时间
我之前在axios里面配置了全局headers然后就疯狂报错 ,说什么前台的 Access-Control-Allow-Origin不在后台的Access-Control-Allow-hearders里面, 各种呵呵?? 其实可以把前台的Access-Control-Allow-hearders配置删掉就好了
请求过程猜测:
前端访问会先发送一个option请求到后台,然后后获取以上数据,其中前台的headers中的数据会和 后台的Access-Control-Allow-Headers做对比,前台的headers数据不能比后台的Headers不同或者多,可以少(比如我前端就直接不设置)
希望可以用我4天的坑,帮助你们