仅在 Chrome 中使用 2 个深 iFrame "Refused to frame"错误



我有一个网站,主机的另一个iFrame在它里面,所以iFrame是2深。当我在Chrome上运行时,我得到下面的错误和最低级别的iFrame不显示,虽然中间层确实显示。当我使用Firefox访问它时,一切正常,控制台没有记录任何错误。

Chrome控制台错误:

Refused to frame 'site1' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' site1 site2 site3".

正如您从错误消息中看到的那样,我在标题中将链中的所有级别引用为框架祖先,因此我无法在那里列出任何更多的站点。此外,如果我尝试在Chrome浏览器中打开中间网站而没有最上面的父级,一切都有效,显示最低级别的iFrame。谁能给点提示告诉我可能遗漏了什么?

原来这都是我的错。我不理解frame-ancestor和frame-src之间的区别。我甚至没有意识到有两套不同的价值观。一旦我通过使用frame-ancestors列出父域并使用frame-src列出子域解决了这个问题,一切都按照它应该的方式工作了。

当我使用Firefox访问它时,一切正常,控制台没有记录任何错误。

Firefox在控制台记录frame-ancestor的错误时有一个错误。

Chrome控制台错误:拒绝框架'site1',因为祖先违反了以下内容安全策略指令:"frame-ancestors 'self' site1 site2 site3" .

这是奇怪的,因为Chrome绝对允许嵌套iframe时,在frame-ancestors指令指定所有主机源上游DOM帧。

可能是你的">site1 site2 site3"介绍了data:源。
或者一些嵌套的iframes发布X-Frame-Options头?

是的,frame-ancestors指令是复杂的和有bug的,但我认为有一些隐藏的细节在你的问题。

相关内容

最新更新