让前端飞WEB前端程序开发Web 前端开发

出现跨域问题的原因及其解决方法

2018-01-11  本文已影响621人  Husbin

出现跨域问题的原因:

同源策略

同源策略

三同

同源策略目的

同源策略的限制范围

规避策略

  1. cookie:设置document.domain共享cookie。
  2. DOM获取:(父子页面通信)H5引入了一个API,这个API为windows对象新增了一个window.postMessage方法,允许跨窗口通信,无论这两个窗口是否同源。

window.opener.postMessage(content,origin)

content是消息的具体内容,origin是协议 + 域名 + 端口

  1. AJAX:

CORS

跨域资源共享(corss-origin resource sharing):CORS需要浏览器和服务器同时支持。目前所有浏览器都支持该功能,IE浏览器不能低于IE10。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

两种请求

CORS请求.png

1. 简单请求

GET /cors HTTP/1.1      
Origin: http://easywork.xin     //浏览器添加字段,说明本次请求来自哪个源(协议+域名+端口)。
Host: 119.23.214.114
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/5.0...

2. 非简单请求

与JSONP比较

Reference

阮一峰-浏览器同源政策及其规避方法

阮一峰-跨域资源共享 CORS 详解

上一篇下一篇

猜你喜欢

热点阅读