我有一个非常旧的网站由ASP .Net 2008构建,由我没有联系的外部团队。突然之间,一个页面似乎无法在Chrome和FireFox中正确呈现,但与其他浏览器一起正常工作。该页面使用iFrame设置。
在Inspect Element(Chrome)下查找无法呈现的页面我看到了错误
Refused to display 'http://www.example.com/somepage.html' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN, SAMEORIGIN'.
所以阅读了一些文章,我可能不完全理解这一点,但在我看来错误是,请求的域不允许自己在框架内显示。
上面的网址不是我熟悉的网址(即第三方,我对此没有任何控制权)。反正有没有解决这个问题,或者纯粹是域名的所有者是否必须允许?如果是这样,为什么它在其他浏览器中有用?
答案 0 :(得分:1)
无论如何都要解决这个问题
不在你的最后。
或者这纯粹是域名所有者必须允许的?
此
如果是,为什么它在其他浏览器中有用?
在这里推测一点,但SAMEORIGIN, SAMEORIGIN
不是有效值。 Chrome似乎正在尝试进行错误恢复并将其视为SAMEORIGIN
答案 1 :(得分:0)
Quentin answer总结得很清楚。
此外,如果它是一个超出您控制范围的外部网站,他们可能有充分的理由禁止框架。 (就像阻止click-jacking一样。)
他们也可能包含Content-Security-Policy:frame-ancestors 'self'
header,效果相同。
(目前,Chromium(和Chrome)中的bug会导致X-Frame-Options
优先于Content-Security-Policy
,而不应该{。}}。
如果他们的网站是通过http
(而不是https
)投放的,并且您可以控制所有用户通过此网站的所有用户网络流量,那么您可能会对其进行控制。我的意思是,在该设备上,如果它允许您这样做,您可以从此网站的响应中过滤掉“不受欢迎的”标题。
当然,这是一个有争议的黑客。根据“受害者”网站的使用条款,这可能是一个法律问题。