同源策略
同源策略(Same origin policy)是浏览器最核心也最基础的安全功能,同源策略会阻止一个域的 javascript 脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol)、主机(host)和端口号(port)
为什么浏览器不支持跨域
- 无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB
- 无法接触非同源网页的 DOM
- 无法向非同源地址发送ajax
实现跨域的方案
所有实现跨域方案demo 以提交至github,有需要可以查看
- jsonp
JSONP由于采用script资源文件请求,而资源请求为GET请求,故仅在GET请求中使用JSONP跨域请求。使用ajax请求网站,而服务器返回的JSONPcallback是恶意执行代码,导致返回浏览器后会自动执行恶意代码,威胁数据安全。(XSS攻击) - cors
若携带凭证发起请求,CORS只能指定一个允许源,不能使用通配符和指定多个源。 - postMessage
- document.domain
在根域范围内,浏览器允许把domain属性的值设置为它的上一级域。例如,在a.test.com域内,可以把domain设置为test.com。16所以document.domain只能处理父域相同,子域不同的情况。 - window.name
- location.hash
- http-proxy
- nginx
- websocket