具有冲突值的多个“X-Frame-Options”标头

Posted

技术标签:

【中文标题】具有冲突值的多个“X-Frame-Options”标头【英文标题】:Multiple 'X-Frame-Options' headers with conflicting values 【发布时间】: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>

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

【问题讨论】:

【参考方案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 标头) 然后您可以覆盖或删除额外的标头

【讨论】:

以上是关于具有冲突值的多个“X-Frame-Options”标头的主要内容,如果未能解决你的问题,请参考以下文章

当站点有多个 X-Frame-Options 标头时,避免默认拒绝

nginx配置X-Frame-Options允许多个域名iframe嵌套

具有多个来源的亚马逊云端分发是不是冲突?

过滤具有多个值的字段

透视具有多个值的表

聚合具有两个或多个具有相同值的列的行