浏览器同源策略和解决办法

摘自阮一峰老师的博客

http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html

http://www.ruanyifeng.com/blog/2016/04/cors.html

 

同源策略:协议、域名、端口相同

若是非同源:Cookie、LocalStorage 和 IndexDB 无法读取; DOM 无法获得;AJAX 请求不能发送;

解决办法

  • document.domain:适用于Cookie 和 iframe 窗口在一级域名相同,只是二级域名不同的情况下

  • 在设置Cookie的时候,指定Cookie的所属域名为一级域名:Set-Cookie:domain='.xxx.xxx'

  • 片段标识符(URL的#号后面的部分):父子窗口可以互相改变片段标识符,如果只是改变片段标识符,页面不会重新刷新。

  • window.name:只要在同一个窗口里,前一个网页设置了这个属性,后一个网页可以读取它。

  • 跨文档通信 API(Cross-document messaging):允许跨窗口通信,不论这两个窗口是否同源。

postMessage方法的第一个参数是具体的信息内容,第二个参数是接收消息的窗口的源(origin),即"协议 + 域名 + 端口"。也可以设为*,表示不限制域名,向所有窗口发送。

  • JSONP

网页通过添加一个

你可能感兴趣的:(知识点)