我试图详细了解相同的原始政策。为此,我试着看看它是如何与代码一起工作的(我在Web开发中是一个完整的noob),所以我开始了一个Flask服务器并创建了一个域local.com
和一个子域store.local.com
。然后,在子域的store.html
页面中,我使用iframe
创建了src=http://local.com
,而不会以here的任何方式修改document.domain
属性。
现在从我读过的内容来看,我认为这会失败,但它会正确地显示超级域index.html
页面的内容。我重复了在两台不同的物理计算机上托管这两个域的实验,但这并没有改变任何东西。 (我已尝试过Firefox和Chrome)
现在我也尝试过使用src=http://google.com
,这确实会被SOP阻止。所以目前我有点陷入困惑,任何人都可以帮助我理解它吗?感谢。
答案 0 :(得分:1)
IFrame通常免于同一原产地政策。
但是,如果您在致电http://google.com
时查看HTTP响应标头,则会看到以下标头:
x-frame-options:SAMEORIGIN
明确地tells your browser that it should prevent the page from being displayed across origins。
MDN describes this particular behavior:
以下是可能嵌入跨源的资源的一些示例:
[...]
<frame>
和<iframe>
的任何内容。网站可以使用X-Frame-Options
标头来阻止这种形式的跨域交互。