JavaScript跨域问题

通过实现Ajax通信的主要限制,来源于跨域安全策略。默认情况下,XHR对象只能访问与包含它的页面位于同一个域中的资源。这种安全策略可以预防某些恶意行为。但是,实现合理的跨域请求对于开发某些浏览器应用程序也是至关重要的。

解决方案有:

1、JSONP:json+padding(内填充)

  原理:动态插入script标签

通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决跨域的数据请求。

2、CORS(Cross-Origin Resource Sharing, 跨域资源共享)

  服务器端对CORS的支持,主要是通过设置Access-Control-Allow-Origin来进行的。就可以允许Ajax进行跨域的访问。

3、document.domain + iframe

  通过修改document.domain来跨子域

主域的document.domain设置为同一个主域,前提条件:这两个域名必须属于同一个基础域名,而且所使用的协议,端口号都要一致,否则无法利用document.domain实现跨域。

4、window.name

window对象有一个name属性,该属性有一个特征,即在一个窗口的生命周期内,窗口载入的所有页面都是共享一个window.name的,每个页面对window.name都有读写权限,window.name是持久存在一个窗口载入过的所有页面中

5、window.postMesssage

  postMessage是HTML5新引进的特性

6、服务器上设置代理页面

 window.name的方法不复杂,也能兼容几乎所有的浏览器,是一个很好得跨域请求方法。

原文地址:https://www.cnblogs.com/WaTa/p/5536959.html