サイトの内容を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');
クリックジャッキング対策については、こちらのサイトが詳しいので参考にしてください。

参考: