Frontpage教程
详解基于浏览器同源策略的几种跨域方式
Flash
跨域
这是一种比较老的跨域方式,现在基本不使用了,要是有兴趣可以自己去看看,在这里就不做讨论。
服务器中转代理
由于同源策略只是浏览器的限制,服务器不会受到同源策略的限制,所以我们可以发送请求的时候,可以设置一个代理服务器,这个代理服务器和我们当前的url
同源,首先请求到该同源的服务器,然后由同源的服务器重定向到我们要访问的url
,由于服务器和服务器之前不受同源策略的限制,所以即使不是同源的也可以不受限制的访问。
服务器中转代理也是我们常用的一种方式。
JsonP
跨域。
JsonP
跨域,是我们经常使用到的一种跨域方式。想必大家都有这样的经历,在script
中使用,src
属性,引入外部资源,比如jQuery
,稍微注意以下就能看到请求的url
其实和我们本地的url
不同源的,但是为什么我们却可以请求到资源呢? 这是因为src
属性具有跨域的能力。凡是拥有src
这个属性的标签都拥有跨域的能力,而且都是GET
请求比如<script>、<img>、<iframe>
使用方法
因为我们无法监控通过<script>
的src
属性是否把数据获取完成,所以我们需要做一个处理。一般是我们向后端传递参数的时候,传一个处理跨域获取数据的函数,服务端会根据参数cb的值返回 对应的内容。
function doJSON(data){} var scri = document.createElement('script') scri.src = 'http://xxx' + '?cd =' +doJSON
这样后台返给我们的数据像这样: doJSON(data), 这样在我们的页面中就会自动执行我们定义好的方法,而且方法的参数就是我们想要的数据,我们就可以在该方法中处理相关业务逻辑。
document.domain
我们可以在页面中设置documentl.domain
,但是这只是针对基础域名相同的情况。例如 在bj.58.com与tj.58.com 中设置document.domain = '58.com',那么只要基础域名是58.com,就可以访问这两个页面
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。