第一种: 用 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(’数据’)