【问题标题】:Multiple 'X-Frame-Options' headers with conflicting values具有冲突值的多个“X-Frame-Options”标头
【发布时间】:2014-04-06 14:23:09
【问题描述】:

更新:这适用于 IE,但 Chrome 仍会抛出此错误。 我正在尝试通过我拥有的另一个网站对我拥有的网站进行 i-frame。这是我在 Chrome 上的 JS 控制台中收到的错误消息:

Multiple 'X-Frame-Options' headers with conflicting values ('AllowAll, SAMEORIGIN, AllowAll') encountered when loading 'http://subdomain.mysite.com:8080/Dir/'. Falling back to 'DENY'.
Refused to display 'http://subdomain.mysite.com:8080/Dir/' in a frame because it set 'X-Frame-Options' to 'AllowAll, SAMEORIGIN, AllowAll'.

我没有在任何地方设置这个,我在所有地方都搜索了 SAMEORIGIN。

主站点是 www.mysite.com,另一个站点是 subdomain.mysite.com。显然同源政策阻止我这样做。 因此,我将 subdomain.mysite.com 上的 X-Frame-Options 标头设置为“AllowAll”。在开始请求方法上,我添加了这个:

HttpContext.Current.Response.Headers.Remove("X-Frame-Options");
HttpContext.Current.Response.AddHeader("X-Frame-Options", "AllowAll");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

在页面级别我添加了这个:

<meta name="x-frame-options" content="allowall" />

在 Javascript 中我添加了这个:

<script type="text/javascript">
    document.domain = "mysite.com";
</script>

我要尝试的东西不多了...在此先感谢您的帮助。

【问题讨论】:

    标签: javascript google-chrome iframe x-frame-options


    【解决方案1】:

    在我的例子中,添加标题的是防伪令牌。在 Application_Start 中添加它会阻止它添加它:

    AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
    

    然后我添加了the X-Frame-Options in the web.config,因为我需要将整个网站都放在一个 IFrame 中。

    【讨论】:

    • 是的,我也是...+1 节省时间
    • @MiketheTike 我有一个类似的question。我想知道你是否可以看看。
    【解决方案2】:

    原来 MVC4 自己添加了标头(不请自来)。解决此问题的唯一方法是显式删除标题。

    Response.Headers.Remove("X-Frame-Options");
    

    可能有一种方法可以说服 MVC4 不要这样做,但它在我的大量 Google 查询中没有服务。

    【讨论】:

    • 我有一个类似的question。我想知道你是否可以看看。
    【解决方案3】:

    Mike the Tike 的回答的更多细节,这被添加到 global.asax.cs 中的 application_start 方法中,您需要使用指令 system.web.helpers

    【讨论】:

      【解决方案4】:

      IIS 可能会在您的之后添加第二个标头(您可以通过在 Chrome 中按 F12 来查看开发人员工具,尝试加载页面,然后单击网络,然后右键单击失败的页面以将响应标头复制到看看)。

      阻止 IIS 添加标头:

      • 运行 IIS 管理器
      • 选择您的网站
      • 双击应用程序的 HTTP 响应标头(或在旧 IIS 上,右键单击网站,单击属性,然后单击 HTTP 标头)
      • 然后您可以覆盖或删除额外的标头

      【讨论】:

        猜你喜欢
        • 2021-12-10
        • 2013-11-16
        • 2018-08-01
        • 1970-01-01
        • 2019-03-15
        • 2017-02-09
        • 2018-11-01
        • 2020-07-21
        • 2022-12-18
        相关资源
        最近更新 更多