一、同源策略是什么?
一个 URL 有三局部组成:协定、域名(指向主机)、端口,只有这三个完全相同的 URL 能力称之为同源。如下,能和 http://www.example.com/dir/index.html
同源的是?
URL | 后果 | 起因 |
---|---|---|
http://www.example.com/dir2/other.html | 同源 | 只有门路不同 |
https://www.example.com/secure.html | 不同源 | 协定不同 |
http://www.example.com:81/dir/etc.html | 不同源 | 端口不同 ( http:// 默认端口是80) |
http://news.example.com/dir/other.html | 不同源 | 域名不同 |
二、父域名与子域名
能够通过设置 document.domain
,让子域名和父域名通过同源策略的检测。
// 1、子域名上面的页面http://store.company.com/dir/other.html // 2、脚本代码中批改document.domain = "company.com";// 3、再去拜访父域名上面的页面,能够不被跨域拦挡fetch("http://company.com/dir/page.html")
备注:然而如果端口不是默认80,也会失败,因为 document.domain = "company.com";
会把端口设置为 null
三、跨域拜访
跨域拜访的解决方案是 CORS,详情,看这里!
四、window.postMessage(不举荐)
跨域拜访也能够通过 window.postMessage
来实现,不过不太举荐,很容易造成平安问题。window.postMessage - 具体用法说明!
五、参考文档
- 同源策略(Same-origin policy)是什么?