解决跨域问题的几种办法

第一种: 用 Flash 来跨域。


第二种: 服务器代理中转 (目前用的还比较多)

比方有两台服务器   X服务器   Y服务器  ---  Y服务器没有我们想要的资源,而X有

Y服务器没有用户想要的数据时,将Y服务器链接到X服务器。等拿到X服务器的数据时,再返回给Y服务器,再继续返回给浏览器。这样在浏览器访问时,就可以拿到数据。

      黑色是拿数据,绿色是返回的路径。


你可以会有疑问? 不是有同源策略吗  怎么可以拿到数据呢

同源策略。指的是浏览器的安全策略,并不是服务器的。


说回正题,这就是服务器代理中转。


第三种:document.domain(针对基础域名相同的情况)

我们拿58同城来举例子

我们只需要在不同的文件下写好 '58.com',就可以了

但是要注意,这样仅限于基础域名相同的情况

bj.58.com  document.domain = '58.com'

tj.58.com  document.domain = '58.com'


第四种: JSONP原理


1.Web页面上用<script> 引入 js文件时则不受是否跨域的影响。
(不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>)


2.于是我们把数据放到服务器上,并且数据为json形式(因为js可以轻松处理json数据)


3.因为我们无法监控通过<script>的src属性是否把数据获取完成,所以我们需要做一个处理。


4.实现定义好处理跨域获取数据的函数,如 function doJSON(data){}。


5.用src获取数据的时候添加一个参数cb=‘doJSON’ (服务端会根据参数cb的值返回 对应的内容)   此内容为以cb对应的值doJSON为函数真实要传递的数据为函数的参数的一串字符 如 doJSON(’数据’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值