JS跨域请求的解决方案

出现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”(可以缺省)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值