Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

昨日とあるところに投稿された質問で"フレーム内に表示する許可がありませんというエラーが出る"と書かれていました。
そういった設定がWebページに対して可能なのかどうか調べてみたところ、X-Frame-Options HTTP レスポンスヘッダというものを使えばコントロールできるようです。

LINK: The X-Frame-Options response header

クリックジャッキング攻撃を防止するなどの目的で用意されたもののようですね。最近新しく出来たものではなく随分前からあるようです。今後使う機会もあるかもしれないので使い方を確認しておきました。

X-Frame-Optionsヘッダに設定可能な値はDENYとSAMEORIGINの2つがあります。

DENY フレーム内に表示するのを全面禁止
SAMEORIGIN 同じサイト内のページでフレームに読み込まれた場合だけ許可

これを読み出される側のページが含まれるサイトで設定します。例えば http://www.example.com/ でDENYを設定しておくと、このサイトに含まれるページは自分のサイトを含めどのサイトに含まれるページからもiframeで読み込むことが出来なくなります。

設定方法を行なうには例えば .htaccess ファイルに次の設定を追加すればいいようです。

Header always append X-Frame-Options SAMEORIGIN

では実際に試してみます。

今回、サイトAに他のページを読み込む index.html と読み込まれるページ frame1.html を用意します。また別のサイトBに読み込まれるページ frame2.html を用意します。

index.htmlでは次のように他のページをiframeで読み込んでいます。

<body>
<iframe src="http://サイトA/frame1.html" width="400" height="100">
frame test1
</iframe>

<iframe src="http://サイトB/frame2.html" width="400" height="100">
frame test2
</iframe>
</body>

読み込まれる方の frame1.html と frame2.html は適当なコンテンツを記述してあります。

1. X-Frame-Optionsを何も設定しなかった場合

最初にX-Frame-Optionsを何も設定しなかった場合です。index.htmlをブラウザで開くと次のように表示されます。

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

※ Chrome 13.0.782.220、Firefox 6.0.2、IE 8で試しています。

何も設定していないので、普通にページがiframe内に読み込まれて表示されます。

2. X-Frame-OptionsにSAMEORIGINを設定した場合

サイトA及びサイトBのどちらにも次の設定を.htaccessに追加しました。(サイトAにも追加したのは読みこまれる frame1.html があるためで、読み込むページの index.html があるからではありません)。

Header always append X-Frame-Options SAMEORIGIN

index.htmlをブラウザで開くと次のように表示されます。

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

SAMEORIGINを設定してありますので、読み込まれるページとは別のサイトから読み込まれた場合、そのページは表示されません。ChromeとFirefoxの場合は単に空白を表示するようですがIEの場合はエラー表示となりました。エラーの部分だけ拡大すると次のように表示されています。

このコンテンツはフレーム内で表示できません
この Web サイトに入力する情報のセキュリティを保護するため、このコンテンツの発行者はフレーム内での表示を許可していません。

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

3. X-Frame-OptionsにDENYを設定した場合

サイトA及びサイトBのどちらにも次の設定を.htaccessに追加しました。

Header always append X-Frame-Options DENY

index.htmlをブラウザで開くと次のように表示されます。

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

Firefox はこのページを開けません 安全のため、firefox は他のサイトが埋め込まれた

DENYを設定してありますので、どこから読み込まれるかに関係無くiframe内では表示されません。

まとめ

このようにX-Frame-Optionsを設定することで、ページがフレーム内で読み込まれたときに表示させるかどうかを適切にコントロールできるようです。また主要な3つのブラウザでそれぞれ対応されていることも確認できました。

なお、今回は .htaccess ファイルに設定を書き込みましたが、ページ単位でmetaタグを使って記述が出来ると書かれている情報もありました。

<meta http-equiv="X-FRAME-OPTIONS" content="SAMEORIGIN" />

実際に試してみたところ、Chromeでは設定が反映されましたがFirefoxとIEでは設定が反映されませんでした。metaタグでは現在使えないのか、それとも設定方法が間違っているのかは分かりません。

発行: 21 Aug 2013
最終修正日: 24 Aug 2022

問題

外部 Web サイトに Tableau ビューを埋め込もうとすると、ビューが表示されない場合があります。

さらに、Tableau Server で SSL を有効にして Tableau Server ダッシュボードに HTTP Web サイトを埋め込もうとすると、Web サイトが表示されない場合があります。

環境

  • Tableau Server
  • SSL
  • Firefox
  • Chrome
  • Internet Explorer
  • HTTP と HTTPS コンテンツを含む Web サイト

解決策

オプション 1

ダッシュボード URL アクションを使用して、新しいブラウザー ウィンドウで Web ページを開きます。詳細については、Tableau ヘルプの「URL アクション」を参照してください。

オプション 2

Web サイト上のすべてのコンテンツを HTTP か HTTPS にします。

原因

Firefox、Chrome、Internet Explorer では、HTTP と HTTPS の両方のコンテンツが混在する Web サイトがブロックされます。

詳細情報

  • Mozilla Firefox: 混在コンテンツのブロック
  • Microsoft サポート: Internet Explorer 9 以降のバージョンでは、セキュリティで保護されたコンテンツのみが表示される
  • Google Chrome サポート: 安全でないサイトについての警告表示を設定する

この記事についてディスカッションする...

Facebookのページプラグインを導入したサイト制作案件でのFirefox動作チェックでしばらく悩みました…。

当該サイトはSSLに対応していなかったのでそれが原因かなと思いましたが、Chromeでは問題なく表示されていたので違う方向で調べることに。
そこで、過去に制作した他のサイトでTwitterの埋め込みが表示されていなかったことを思い出しました。

Firefoxのコンテンツブロッキング(トラッキング防止機能)が影響しているようです。
オプションの「コンテンツブロッキング」で「検出されたすべてのトラッカー」のチェックを外すことで表示されるようになりました。

こういったブロック機能の使用は閲覧ユーザー次第とも言えますが、やはりチェックしないといけませんね。

ファイアフォックスのポップアップ設定は?

Firefoxを立ち上げ、画面右上の「メニューボタン」を選択し、「オプション」を選択します。 2. 画面左側の「プライバシーとセキュリティ」を選択し、「ポップアップウィンドをブロックする」のチェックを外します。 ※既にチェックが外れていれば、ポップアップブロックは解除されています。

Firefoxのパフォーマンス設定は?

Firefoxの右上にある「メニューボタン(横三本線)」をクリックします。 表示されたメニューから「オプション」をクリックします。 画面が切り替わったら、左側の「一般」をクリックします。 「推奨のパフォーマンス設定を使用する」がオンになっていれば、ハードウェアアクセラレーションが有効になっています。

Firefox オプション どこ?

Firefox オプション設定 【 ツール 】から【 オプション 】をクリックします。 左側項目にオプション一覧メニューがあります。