出现的问题
棘手的跨域问题。为什么说这个问题棘手呢?因为明明后端已经处理了跨域,但是浏览器还是报跨域问题
浏览器报错如下:
Access to XMLHttpRequest at 'http://192.168.31.220:9999/jeecg-green/bigGreen/weather' from origin 'null' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values 'null, *', but only one is allowed.
能确定后端已经处理过跨域了的
原因猜测
报错重点:报错信息最后一句 : but only on is allowed
猜测:服务端给了两个Access-Control-Allow-Origin
抓包结果如下:
可能的原因分析:
1、java 和nginx 同时处理了跨域
2、java 处理了多次跨域
确定原因
查看了nginx配置,只有一个proxy_pass ******.com
确定了是java处理了多次跨域
在这个项目中只负责前端,后端没有接触
但是还有半个小时就要给客户演示.嗯。。。。。因为java用的框架的原因不好解决。更棘手,哈哈哈
最终解决
location / {
#去掉java给的Access-Control-Allow-Origin 响应头
proxy_hide_header Access-Control-Allow-Origin ;
proxy_pass 123.com;
#加个always 所有的接口都带一个
add_header Access-Control-Allow-Origin "*" always;
}
以下也可
location / {
#更改客户端请求头 没有origin java 就不会处理跨域,
#但是要看java程序的情况,有些会get一个Access—Control-Allow-Origin 相应头
#这个方案不保险
proxy_set_header Origin '';
proxy pass 123.com ;
add_header Access-Control-Allow-Origin "*" always;
}