更新:这适用于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>
我的事情已经不多了......请提前感谢您的帮助。
答案 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添加标题: