-
通过jsonp跨域
由于浏览器同源策略是允许类似script有src属性的标签这样的跨域资源嵌套的,所以script标签的资源不受同源策略的影响 -
document.domin
两个域名必须属于同一基础域名,并且所有的协议端口完全一致,否则无法跨域 -
iframe、hash
父页面向子页面传输数据:将要传递的数据添加到子页面的url的hash值上,子页面通过location.hash并添加定时器实时地动态父页面传来地数据;子页面向父页面传输数据:利用window.name的特性,以及页面重新加载但当前页面的name值不变,即使换了一个页面,需要三个页面配合使用。一个应用页面,一个数据页面,一个代理文件。代理文件一般是一个没有任何内容的html页面,需要和应用页面在同一域下。将数据页面的窗口换成代理页面,代理页面通过window.name获取数据页面留下的数据,应用页面在访问和它同源的代理页面获取数据,就完成了跨越。 -
CORS(cross-origin-resource-sharing)
在服务器端设置的,不需要客户端进行操作。cors背后的思想是使用自定义的http头部让浏览器和服务器进行沟通,从而决定请求或响应是否应该成功还是应该失败。浏览器向服务器发送请求,如果服务器认为这个请求可以接收,就在Access-Control-Allow-Origin头部中会发相同的源信息(如果是公共资源可以会发*);如果没有这个头部或者有这个头部但信息源不匹配,浏览器就会驳回请求。正常情况下,浏览器会处理请求(请求和响应都不包含cookie信息) -
服务器跨域、服务器中转代理
前端向本地服务器发送请求,本地服务器代替前端在向服务器接口发送请求进行服务器间通信,本地服务器是个中转站的角色,在将响应的数据返回给前端。 -
其他一些方式
postMessage和onMessage
nodejs中间件代理跨域
WebSocket协议跨域
link、script、img、background:url()、@font-face()等均不受跨域限制