HTTPX-Frame-Options レスポンスヘッダーは、ブラウザーがページを <frame>, <iframe>, <object> の中に表示することを許可するかどうかを示すために使用されます。サイトはコンテンツが他のサイトに埋め込まれないよう保証することで、クリックジャッキング攻撃を防ぐためにこれを使用することができます。

強化されたセキュリティは、ユーザーが X-Frame-Options に対応したブラウザーを使用して文書にアクセスした場合のみ提供されます。

ヘッダー種別 レスポンスヘッダー
禁止ヘッダー名 いいえ

構文

X-Frame-Options には三つの有効なディレクティブがあります。

X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/

ディレクティブ

deny を指定した場合は、他のサイトからフレームにページを読み込もうとした時に失敗するだけでなく、同じサイトから読み込もうとした時にも失敗します。一方、 sameorigin を指定した場合は、フレームの中のページを含むサイトが、ページを提供しているサイトと同じである限り、フレーム内でページを利用することができます。

deny
サイト側の意図に関わらず、ページをフレーム内に表示することはできません。
sameorigin
ページは同じオリジンのページに含まれるページのフレーム内でのみ表示されます。仕様書ではこのオプションを最上位、親、チェーン全体のどれに適用するかをブラウザーベンダーに任せていますが、すべての祖先も同じ祖先でない限り、利用価値がないと議論されています。 (バグ 725490 を参照)。対応の詳細はブラウザーの対応もご覧ください。
allow-from uri
ページは指定されたオリジンのフレーム内でのみ表示されます。なお、 Firefox では現在も sameorigin と同じ問題があります。 — 同じオリジンであるかどうかを確認するために、フレームの祖先をチェックしません。

メモ: meta タグに設定しても意味がありません。例えば、 <meta http-equiv="X-Frame-Options" content="deny"> は効果がありません。使用しないでください。以下の例にあるように、 X-Frame-Options は HTTP ヘッダーを通じて設定された場合のみ動作します。

Apache の設定

Apache で X-Frame-Options ヘッダをすべてのページで送信するように設定するには、以下の記述をサイトの設定ファイルに追加してください:

Header always set X-Frame-Options "sameorigin"

Apache で X-Frame-Options を deny に設定するように設定するには、サイトの設定に以下の行を追加してください。

Header set X-Frame-Options "deny"

Apache で X-Frame-Optionsallow-from で特定のホストに設定する場合、サイトの設定に以下の行を追加してください。

Header set X-Frame-Options "allow-from https://example.com/"

nginx の設定

nginx で X-Frame-Options ヘッダーを送信するように設定するには、以下の記述を http、server、 location のいずれかの設定に追加してください。

add_header X-Frame-Options sameorigin;

IIS の設定

IIS で X-Frame-Options ヘッダーを送信するように設定するには、サイトの Web.config ファイルにこれを追加してください。

<system.webServer>
  ...

  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="sameorigin" />
    </customHeaders>
  </httpProtocol>

  ...
</system.webServer>

HAProxy の設定

HAProxy で X-Frame-Options ヘッダーを送信するように設定するには、これを front-end, listen, backend の設定の何れかに追加してください。

rspadd X-Frame-Options:\ sameorigin

仕様書

仕様書 題名
RFC 7034 HTTP Header Field X-Frame-Options

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 4Edge 完全対応 ありFirefox 完全対応 3.6.9IE 完全対応 8Opera 完全対応 10.5Safari 完全対応 4WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり
ALLOW-FROMChrome 未対応 なしEdge 完全対応 ありFirefox 完全対応 18IE 完全対応 8Opera ? Safari 未対応 なしWebView Android ? Chrome Android ? Edge Mobile ? Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 未対応 なし
SAMEORIGINChrome 完全対応 あり
補足
完全対応 あり
補足
補足 Starting in Chrome 61, this applies to all of a frame's ancestors.
Edge ? Firefox 完全対応 あり
補足
完全対応 あり
補足
補足 Starting in Firefox 59, this applies to all of a frame's ancestors.
IE 完全対応 8Opera 完全対応 あり
補足
完全対応 あり
補足
補足 Starting in Opera 48, this applies to all of a frame's ancestors.
Safari 完全対応 ありWebView Android 完全対応 あり
補足
完全対応 あり
補足
補足 Starting in Chrome 61, this applies to all of a frame's ancestors.
Chrome Android 完全対応 あり
補足
完全対応 あり
補足
補足 Starting in Chrome 61, this applies to all of a frame's ancestors.
Edge Mobile ? Firefox Android ? Opera Android 完全対応 あり
補足
完全対応 あり
補足
補足 Starting in Opera 48, this applies to all of a frame's ancestors.
Safari iOS ? Samsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mfuji09, hamasaki, ethertank, yyss
最終更新者: mfuji09,