iframeで特定サイトの内容が表示できないのはなぜ?

  • 作成日:2017-2-14
サイトの内容をiframeで表示したいが、特定のサイトだけ表示できないのはなぜ?
windowsのchromeブラウザであるサイトをiframeで表示したいのだが、なぜが真っ白になって表示出来ない場合がある。別のサイトを表示してみるとこちらは表示が可能だった。表示出来るサイトとできないサイトがあるのはなぜか調べてみた。

サンプル

ソースコーディングは下記のような感じになります。表示するhttp://example.com/index.htmlは自分の環境に合わせて調整してください。
※http/httpsとは関係ありません。

セキュリティ対策のための仕様

クリックジャッキングというセキュリティ対策で、X-Frame-Optionsを表示しようとするサイトでDenyに設定されているために、iFrameで表示しないようになっているのです。

X-Frame-Optionsの設定値

X-Frame-Options 内容
Deny フレーム内のページ表示を全ドメインで禁止
SAMEORIGIN フレーム内のページ表示を同一ドメイン内のみ許可
ALLOW-FROM uri フレーム内のページ表示を指定されたドメインに限り許可

X-Frame-Optionsを設定する

httpd.confで設定する

##フレーム内のページ表示を全ドメインで禁止したい場合
Header always append X-Frame-Options DENY

##フレーム内のページ表示を同一ドメイン内のみ許可したい場合
Header always append X-Frame-Options SAMEORIGIN

##フレーム内のページ表示を指定されたドメインに限り許可したい場合
Header always append X-Frame-Options ALLOW-FROM http://example.com


phpプログラムで設定
/* フレーム内のページ表示を全ドメインで禁止したい場合 */
header('X-Frame-Options: DENY');

/* フレーム内のページ表示を同一ドメイン内のみ許可したい場合 */
header('X-Frame-Options: SAMEORIGIN');

/* フレーム内のページ表示を指定されたドメインに限り許可したい場合 */
header('X-Frame-Options: ALLOW-FROM http://example.com');

クリックジャッキング対策については、こちらのサイトが詳しいので参考にしてください。
スポンサーリンク

ランキング

記事連動目次

※右側の記事と連動したインデックスです。見たいインデックスをクリックしてください。
ページ上部へ戻る