跨域请求解决方案

开发中遇到的问题,ajax请求非同源地址,浏览器报跨域错误,这是浏览器的安全策略,防止有人用嵌入脚本获取非同源的文档,窃取用户信息。

什么叫javaScript同源策略?参考这篇文章     同源策略

既然是浏览器限制住了ajax调用,那可以请求同源地址服务器,代理请求目标服务器,达到我们ajax访问非同源的目的。

当然,除了上述方法,还可以利用jsonp协议。

jsonp协议是聪明的开发者想出来的hack技术,跟json关系不大,原因下面再说。

首先要讲,浏览器只是限制了js访问非同源,但像<script>、<img>的src属性里的链接地址是不做限制,也就是说,通过这些标签可以实现与远程服务端交互。到这一步,越过了浏览器的安全策略,获取到了服务端的数据。jsonp是双方协商好的交互方式。

做两件事:

客户端

添加一个带有目标地址和参数的script标签、定义一个和参数同名的方法 ,这是一个回调方法,可以在方法里做做数据解析。

服务端

根据客户端传递的参数,写入同名方法调用和json数据,返回给客户端加载执行。 其它数据格式也OK,json比较简洁而且对js支持,所以就采用这个格式。


如果还不理解的话,举个饭堂打饭例子:你去饭堂打饭菜,你吩咐阿姨把饭菜打在盒子里(回调方法),回头你接到盒子马上打开就能拿到饭了(数据)。  


参考文章


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值