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

时间:2014-03-04 20:28:13

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

更新:这适用于IE,但Chrome仍然会抛出此错误。 我试图通过我拥有的另一个网站构建我拥有的网站。以下是我在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>

我的事情已经不多了......请提前感谢您的帮助。

4 个答案:

答案 0 :(得分:21)

在我的情况下,正在添加标题的是防伪标记。在Application_Start中添加它会阻止它添加它:

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;

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

答案 1 :(得分:1)

结果MVC4自己添加标题(未经请求)。解决这个问题的唯一方法是明确删除标题。

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

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

答案 2 :(得分:1)

Mike the Tike的答案的一些进一步细节,这被添加到global.asax.cs中的application_start方法中,您需要使用using指令system.web.helpers

答案 3 :(得分:0)

IIS可能会在您之后添加第二个标题(您可以通过在Chrome中按F12 for Developer Tools,尝试加载页面,然后单击“网络”,右键单击失败的页面以将响应标头复制到看看)。

阻止IIS添加标题:

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