什么是window.origin
?它似乎没有在the usual place中记录。
它看起来可能与window.location.origin
非常相似 - 例如,在Stack Overflow上,两者都返回
https://stackoverflow.com
但在iframe
内部,它们是不同的:
console.log(window.location.origin);
console.log(window.origin);
https://stacksnippets.net null
嵌入的片段在没有iframe
的allow-same-origin
内。如果您更改iframe,例如,如果您编辑Stack Overflow的HTML并手动添加属性:
<iframe name="313b857b-943a-7ffd-4663-3d9060cf4cb6" sandbox="allow-same-origin allow-forms allow-modals allow-scripts" class="snippet-box-edit" frameborder="0" style="">
^^^^^^^^^^^^^^^^^^
然后运行代码片段,得到:
https://stacksnippets.net https://stacksnippets.net
使用<iframe>
s在其他网站上展示了同样的行为。
Google似乎没有任何关于该主题的权威链接。搜索exact phrase + Javascript提供了许多与iframe
s和postMessage
相关的结果,但没有确切描述window.origin
实际上是什么。
从孩子postMessage
调用iframe
似乎导致父窗口接收到origin
属性与子框架的window.origin
匹配的消息 - 没有allow-same-origin
,它是null
,否则看起来它与孩子的window.location.origin
相同。
以上是我认为我从猜测和检查中发现的,但我还远未确定。我很感激确认/解释,最好是链接到权威来源。
我认为它没有记录,因为两者都是相同的,差别不大,大多数情况下,选择使用哪个选项并不重要。但是,有一些情况下,一个优先于另一个,例如:
请参阅this question以供参考。