同源需要滿足三個要素相同:
1.協(xié)議相同
2.域名相同,即使一級域名相同,二級域名不同也是不同源的
3.端口相同
如果不同源會有3種限制
1.cookie、localstorage、indexDB不能讀取
2.DOM無法獲得
3.AJAX請求不能發(fā)送
針對不同的方式有9種規(guī)避方式
一級域名相同,二級域名不同(僅適用于cookie、ifram)
1.瀏覽器端設(shè)置 document.domain=一級域名
2.瀏覽器端設(shè)置 Set-Cookie: key=value; domain=.example.com; path=/(example.com一級域名)
完全不同的源
3.片段標(biāo)識符
4.window.name
5.window.postMessage(HTML5 跨文檔消息API——cross-document message)(localstorage可以讀?。?/p>
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