拒绝显示,将X-Frame-Options设置为SAMEORIGIN

时间:2015-12-15 12:27:49

标签: javascript asp.net google-chrome x-frame-options

我有一个非常旧的网站由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'.

所以阅读了一些文章,我可能不完全理解这一点,但在我看来错误是,请求的域不允许自己在框架内显示。

上面的网址不是我熟悉的网址(即第三方,我对此没有任何控制权)。反正有没有解决这个问题,或者纯粹是域名的所有者是否必须允许?如果是这样,为什么它在其他浏览器中有用?

2 个答案:

答案 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)投放的,并且您可以控制所有用户通过此网站的所有用户网络流量,那么您可能会对其进行控制。我的意思是,在该设备上,如果它允许您这样做,您可以从此网站的响应中过滤掉“不受欢迎的”标题。

当然,这是一个有争议的黑客。根据“受害者”网站的使用条款,这可能是一个法律问题。