web-dev-qa-db-ja.com

値が競合する複数の「X-Frame-Options」ヘッダー

更新:これはIEですが、Chromeはまだこのエラーをスローしています。私は自分が所有するサイトをiフレームしようとしています私が所有する別のサイトによるものです。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」に設定しました。 begin-requestメソッドにこれを追加しました:

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>

やることが足りなくなってきました…よろしくお願いします。

9
Arachnid

MVC4はそれ自体でヘッダーを追加します(未承諾)。これを回避する唯一の方法は、ヘッダーを明示的に削除することでした。

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

これをしないようにMVC4を説得する方法があるかもしれませんが、それは私のスコアのGoogleクエリでは機能しませんでした。

1
Arachnid

私の場合、ヘッダーを追加していたのは偽造防止トークンでした。これをApplication_Startに追加すると、追加が停止しました。

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;

次に、サイト全体をIFrameに含める必要があるため、 web.configのX-Frame-Options を追加しました。

22
Mike the Tike

Mike the Tikeの答えの詳細については、global.asax.csのapplication_startメソッドに追加されています。ここでは、usingディレクティブsystem.web.helpersが必要です。

1
Phil Kermeen

IISが2番目のヘッダーを追加している可能性があります(これは、Chromeの開発ツールでF12キーを押し、ページの読み込みを試みてから[ネットワーク]をクリックし、失敗したページを右クリックして応答ヘッダーをコピーして確認します。 )。

IISによるヘッダーの追加を停止するには:

  • 実行IISマネージャー
  • あなたのウェブサイトを選択してください
  • アプリケーションのHTTP応答ヘッダーをダブルクリックします(または、古いIISでは、Webサイトを右クリックし、[プロパティ]、[HTTPヘッダー]の順にクリックします)。
  • 次に、余分なヘッダーを上書きまたは削除できます
0
cometfish