Cross-domain Calls


跨域问题产生的原理

A页面调用到B页面,A与B之间如果要进行数据交互,则A与B必须在同一个域。
如A页面的地址为tieba.baidu.com,B页面的地址为static.tieba.baidu.com,这俩属于不同域,则访问失效。 但如果两个页面之间不需要进行数据交互,则没有影响。该限制是由浏览器实现的。

同源安全策略

同源安全策略是客户端脚本的重要的安全度量标准,目的是防止某个文档或脚本从多个不同源装载,所有支持javascript的浏览器都会使用这个策略。 同源的概念:同协议、同域名、同端口 例子:当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面 。当一个百度浏览器执行一个脚本的时候会检查这个脚本是属于哪个页面的, 即检查是否同源,只有和百度同源的脚本才会被执行。

同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。同源策略不阻止将动态脚本元素插入文档中。 参考理论一:在浏览器中不能直接来跨域访问,而在服务器端没有跨域安全限制。 这样的话,可以在服务端完成跨域访问,而在客户端来取得结果就可以了。 参考理论二:同源策略不阻止动态脚本元素插入,脚本访问可以跨域。

实现跨域的方案

  • 用服务器端的XmlHttpRequest代理实现跨域访问
  • 用动态script标签实现客户端的跨域访问
  • iframe跨域访问
  • flash跨域访问