【问题标题】:Refused to display, set X-Frame-Options to SAMEORIGIN拒绝显示,将 X-Frame-Options 设置为 SAMEORIGIN
【发布时间】:2016-03-21 05:58:24
【问题描述】:

我有一个非常旧的站点,由一个我没有联系的外部团队用 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'.

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

上面的网址不是我熟悉的网址(即它的第三方,我无法控制它)。有没有办法解决这个问题,或者这纯粹是域名所有者必须允许的?如果是这样,为什么它可以在其他浏览器中运行?

【问题讨论】:

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


    【解决方案1】:

    有没有办法解决这个问题

    不是在你的最后。

    或者这纯粹是域名所有者必须允许的?

    这个

    IF 那为什么它在其他浏览器中也能工作?

    在这里推测一下,但SAMEORIGIN, SAMEORIGIN 不是有效值。看起来 Chrome 正在尝试错误恢复并将其视为SAMEORIGIN

    【讨论】:

    • 如果要嵌入的站点是我们的。那么如何解决它。请帮忙。我可以完全控制要嵌入的网站。我怎样才能摆脱错误?
    【解决方案2】:

    Quentin answer总结得很好。

    此外,如果它是您无法控制的外部网站,他们可能有充分的理由禁止框架。 (比如阻止click-jacking。)

    他们可能还包含了Content-Security-Policy:frame-ancestors 'self' header,它具有相同的效果。

    (目前,Chromium(和 Chrome)中的 bug 导致 X-Frame-Options 优先于 Content-Security-Policy 而它不应该。)

    如果他们的网站通过http(不是https)提供服务,并且您可以控制一个公共网络设备,您的所有用户到该网站的网络流量都必须通过该设备控制,您可能会破解。我的意思是,在该设备上,如果它允许您这样做,您可以从该站点的响应中过滤掉“不需要的”标题。

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

    【讨论】:

    • 如果要嵌入的站点是我们的。那么如何解决它。请帮忙。我可以完全控制要嵌入的网站。我怎样才能摆脱错误?
    • 如果是你的,请调整它以确保它不会发出任何 X-Frame-OptionsContent-Security-Policy:frame-ancestors http 标头。或调整这些标题以允许您的其他网站。如果需要,最好在 stackoverflow 上提出一个新问题,cmets 不适合 Q&A。
    • 我正在创建一个应用程序,允许用户选择将显示在 iframe 中的 URL。因为我不知道他们想访问哪些网站,有没有解决方法 X-Frame-Options 的东西,这样用户的网站无论如何都会加载??
    • 当然,不,我知道没有解决方法!否则,该变通方法将违背该指令的目的,并且确实会成为该变通方法适用的浏览器中的安全漏洞。我不会将其共享以供使用,而是将其作为安全漏洞报告给受影响的浏览器。
    猜你喜欢
    • 2013-12-28
    • 2020-07-02
    • 2017-05-22
    • 2022-11-29
    • 2017-06-05
    • 2016-10-08
    • 2018-02-22
    相关资源
    最近更新 更多