同源需要满足三个要素相同:
1.协议相同
2.域名相同,即使一级域名相同,二级域名不同也是不同源的
3.端口相同
如果不同源会有3种限制
1.cookie、localstorage、indexDB不能读取
2.DOM无法获得
3.AJAX请求不能发送
针对不同的方式有9种规避方式
一级域名相同,二级域名不同(仅适用于cookie、ifram)
1.浏览器端设置 document.domain=一级域名
2.浏览器端设置 Set-Cookie: key=value; domain=.example.com; path=/(example.com一级域名)
完全不同的源
3.片段标识符
4.window.name
5.window.postMessage(HTML5 跨文档消息API——cross-document message)(localstorage可以读取)
AJAX
6.JSONP只支持get请求
7.websocket
8.CORS-Cross-origin resource sharing——支持所有请求
9.代理
参考:
1.http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html
2.http://www.ruanyifeng.com/blog/2016/04/cors.html
网友评论