我有两个域名:
sub1.domain.org 包含一个指向另一个域名 sub2.domain.org 的 iframe。
在 sub2 上:
//triggers a cross-domain security error
alert(window.parent.location.href);
//executes just fine on FF, IE, Chrome, and Safari.
window.parent.location.href = new_url;
所以看起来我可以写入父窗口的URL,但是不允许读取。这是标准吗?我只是想知道为什么会这样工作。
我在这里找到了一个答案: 为什么子窗口可以重定向父窗口? 引用:
同源策略也不适用于此处。通过在浏览器窗口中更改地址栏中的URL,您也会更改window.top.location.href属性。如果那里有同源限制,互联网就会崩溃。您没有向另一个位置发送请求,也没有从第三方资源获取数据并将其加载到页面中,而是将浏览器重定向到另一个位置,从而关闭并清除DOM。
但这个答案引发了其他后续问题。
当我们更改父级的URL时,难道我们不是在技术上修改父级的DOM (即使它关闭了) ,因此违反了同源策略吗?
如果同源策略应用于此处,互联网会怎样呢?我们可以将人工输入URL与通过位于不同域的脚本更改URL区分开来。
我理解这种情况不违反同源策略,但我仍然很难理解为什么会允许这样做。有人能提供更多的洞见来解释为什么允许吗?