442

私は小さな Web ページを作成しています。その目的は、他のいくつかのページをフレームに収めることであり、それらを 1 つのブラウザー ウィンドウに統合して見やすくすることです。フレーム化しようとしているページのいくつかは、フレーム化を禁止し、「X-Frame-Options によって表示が禁止されているため、ドキュメントの表示を拒否しました」をスローします。クロームでエラー。これは (正当な理由による) セキュリティ上の制限であり、変更する権限がないことを理解しています。

X-Frame-Options ヘッダーによってトリップされない単一のウィンドウ内にページを表示する代替のフレーミングまたは非フレーミング方法はありますか?

4

27 に答える 27

217

同様の問題が発生しました。自分のサイトのコンテンツをiframeに表示しようとして(Colorboxを使用したライトボックススタイルのダイアログとして)、サーバー全体の「X-Frame-OptionsSAMEORIGIN」ヘッダーがありました。ソースサーバーがテストサーバーに読み込まれないようにします。

これはどこにも文書化されていないようですが、iframeしようとしているページを編集できる場合(たとえば、自分のページである場合)、任意の文字列を含む別のX-Frame-Optionsヘッダーを送信するだけで無効になりますSAMEORIGINまたはDENYコマンド。

例えば。PHPの場合、

<?php
    header('X-Frame-Options: GOFORIT'); 
?>

ページの上部にあるブラウザは2つを組み合わせて、次のヘッダーを作成します。

X-Frame-Options SAMEORIGIN, GOFORIT

...そしてiframeにページをロードすることができます。これは、最初のSAMEORIGINコマンドがサーバーレベルで設定されていて、ページごとにオーバーライドしたい場合に機能するようです。

ではごきげんよう!

于 2011-07-20T20:13:27.637 に答える
162

YouTube ビデオでこのエラーが発生した場合は、完全な URL を使用するのではなく、共有オプションから埋め込み URL を使用してください。次のようになりますhttp://www.youtube.com/embed/eCfDxZxTBW4

watch?v=また、embed/そうhttp://www.youtube.com/watch?v=eCfDxZxTBW4なるように置き換えることもできますhttp://www.youtube.com/embed/eCfDxZxTBW4

于 2011-12-15T14:01:35.697 に答える
122

に Google マップを埋め込もうとしているときにこのエラーが発生した場合は、ソース リンクiframeに追加する必要があります。&output=embed

于 2011-09-19T11:09:44.720 に答える
74

UPDATE 2019:クライアント側の JavaScript と私のX-Frame-Bypass Web コンポーネントだけを使用してバイパスできます。デモは次のとおりです。(Chrome と Firefox でテスト済み)。X-Frame-Options<iframe>X-Frame-Bypass

于 2014-08-30T23:05:39.393 に答える
23

を追加する

  target='_top'

Facebookタブの私のリンクに問題が修正されました...

于 2012-08-24T11:40:41.577 に答える
21

Vimeo コンテンツを埋め込もうとしてこのエラーが発生する場合は、iframe の src をhttps://vimeo.com/63534746

からhttp://player.vimeo.com/video/63534746に変更します。

于 2013-05-31T16:26:34.333 に答える
13

Site administration ► Security ► HTTP securitymoodle 2をiframeに埋め込もうとしたときに同じ問題が発生しました。解決策は次のとおりです。Allow frame embedding

于 2012-04-16T12:28:53.967 に答える
7

これが解決策です!

FB.Event.subscribe('edge.create', function(response) {
    window.top.location.href = 'url';
});

Facebookアプリで機能した唯一のもの!

于 2013-01-21T14:16:36.197 に答える
7

私はほとんどすべての提案を試しました。ただし、問題を本当に解決した唯一のことは次のとおりです。

  1. .htaccessPHP ファイルと同じフォルダーに を作成します。

  2. 次の行を htaccess に追加します。

    Header always unset X-Frame-Options

その後、別のドメインからの iframe による PHP の埋め込みが機能するはずです。

さらに、PHP ファイルの先頭に以下を追加できます。

header('X-Frame-Options: ALLOW');

ただし、これは私の場合は必要ありませんでした。

于 2016-09-02T18:48:57.493 に答える
4

mediawiki でも同じ問題がありました。これは、セキュリティ上の理由から、サーバーがページを iframe に埋め込むことを拒否したためです。

書いて解決しました

$wgEditPageFrameOptions = "SAMEORIGIN"; 

mediawiki の php 設定ファイルに追加します。

それが役に立てば幸い。

于 2013-03-09T23:01:18.187 に答える
3

Tomcat 8.0.30 を使用していましたが、どの提案も役に立ちませんでした。を更新してX-Frame-Optionsに設定しようとしているのでALLOW、埋め込み iframe を許可するように構成した方法を次に示します。

  • Tomcat conf ディレクトリに移動し、web.xml ファイルを編集します。
  • 以下のフィルターを追加します。
<filter>
            <filter-name>httpHeaderSecurity</filter-name>
            <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
                   <init-param>
                           <param-name>hstsEnabled</param-name>
                           <param-value>true</param-value>
                   </init-param>
                   <init-param>
                           <param-name>antiClickJackingEnabled</param-name>
                           <param-value>true</param-value>
                   </init-param>
                   <init-param>
                           <param-name>antiClickJackingOption</param-name>
                           <param-value>ALLOW-FROM</param-value>
                   </init-param>
            <async-supported>true</async-supported>
       </filter>

       <filter-mapping>
                   <filter-name>httpHeaderSecurity</filter-name>
                   <url-pattern>/*</url-pattern>
                   <dispatcher>REQUEST</dispatcher>
       </filter-mapping> 
  • Tomcat サービスを再起動します
  • iFrame を使用してリソースにアクセスします。
于 2016-12-08T16:34:59.270 に答える
3

FWIW:

iFrameこの「ブレーカー」コードが表示されたときに、強制終了する必要がある状況がありました。そこで、PHPfunction get_headers($url);を使用してリモート URL をチェックアウトしてから、iFrame. パフォーマンスを向上させるために、毎回 HTTP 接続を行わないように結果をファイルにキャッシュしました。

于 2012-03-19T03:43:37.147 に答える
1

wordpress Web サイトを実行しているときに、この問題に遭遇しました。私はそれを修正するためにあらゆる種類のことを試みましたが、方法がわかりませんでした.最終的に問題は、DNS 転送をマスキングで使用していたためであり、外部サイトへのリンクが適切に対処されていませんでした. つまり、私のサイトはhttp://123.456.789/index.htmlでホストされていましたが、 http://somewebSite.com/index.htmlで実行するようにマスクされていました。ブラウザーにhttp://123.456.789/index.htmlと入力すると、同じリンクをクリックしても、JS コンソールで X-frame-origins の問題は発生しませんでしたが、http://somewebSite.com/index.html を実行していますやりました。適切にマスクするには、ホストの DNS ネーム サーバーをドメイン サービスに追加する必要があります。ホスティング サービスとして digitalocean.com を使用します。

于 2014-06-03T00:02:29.217 に答える
0

関数の代わりに、以下に示すこの行を使用してくださいheader()

echo "<script>window.top.location = 'https://apps.facebook.com/yourappnamespace/';</script>";
于 2013-10-07T10:54:33.410 に答える
0

言及されていませんが、場合によっては役立ちます。

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState !== 4) return;
    if (xhr.status === 200) {
        var doc = iframe.contentWindow.document;
        doc.open();
        doc.write(xhr.responseText);
        doc.close();
    }
}
xhr.open('GET', url, true);
xhr.send(null);
于 2014-03-19T06:22:18.830 に答える
0

ディレクトリ全体から X-Frame-Options を削除する場合は、.htaccess を編集します。

そして次の行を追加します: Header always unset X-Frame-Options

【内容:「X-Frame-Optionsで禁止されている表示」の克服】

于 2019-07-16T13:12:00.820 に答える