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

Ara*_*nid 9 javascript iframe google-chrome 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'.
Run Code Online (Sandbox Code Playgroud)

我在任何地方搜索了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", "*");
Run Code Online (Sandbox Code Playgroud)

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

<meta name="x-frame-options" content="allowall" />
Run Code Online (Sandbox Code Playgroud)

在Javascript中我添加了这个:

<script type="text/javascript">
    document.domain = "mysite.com";
</script>
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*ike 22

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

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
Run Code Online (Sandbox Code Playgroud)

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


Ara*_*nid 2

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

Response.Headers.Remove("X-Frame-Options");
Run Code Online (Sandbox Code Playgroud)

可能有一种方法可以说服 MVC4 不要这样做,但它并没有在我的 Google 查询中发挥作用。