出现JS跨域请求的原因:
浏览器检测到源的异常
什么叫做JS跨域:
两个应用协议,主机地址(域名),端口号。三者有一个不同,则认为他们的域不同。
例如:
http:localhost:80/a
https:localhost:80/b
此时的a与b的应用协议是不同的,这时他们的域也是不同的,在此时a的应用js脚本去调用b的后端,会出现js跨域。
解决方案:
1.前台,JSONP。(不去研究)
2.后端,CORS。
在请求的时候,发现是跨域请求之后,会产生预请求和预响应。之后才会发送真的请求和接收响应。
解决方案:
##1根据请求地址,找到Controller的请求二级目录的方法,在其中设置响应头。
1.不需要操作cookie
//可以访问的域
response.setHeader(“Access-Control-Allow-Origin”,“http://localhost:xxx”);
2.需要操作跨域cookie(对有操作cookie的跨域请求时,url不能使用*)
//操作cookie时,在客户端Controller.js发送请求的时候里加上{withCredentials":true}才可以对跨域cookie操作,
对跨域cookie操作 服务端和客户端都必须同意操作,在后面加上如下这一行代码即可
response.setHeader(“Access-Control-Allow-Credentials”,“true”);
##2在SpringMVC框架里有跨域注解
在请求路径的二级目录下配置
@CrossOrigin(origins=“地址”,allowCredentials=“true”(可以缺省)