25

次の単純な iFrame コードを使用して Yahoo をロードしていますが、とにかくロードされません。Chrome Inspector では、URL ステータスが最初に 301 と表示され、次にキャンセルされます。なぜそれが起こっているのですか?

<iframe name="iframe1" src="http://yahoo.com"></iframe>
4

5 に答える 5

37

ログに次のようなエラー メッセージが表示される可能性があります。

"Refused to display document because display forbidden by X-Frame-Options."

あなたの質問に答えるには:

Yahooはこれを行っていますavoid clickjacking attacks, by ensuring that their content is not embedded into other sites.

詳細については、 https ://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header を参照してください。

于 2012-04-22T13:19:44.680 に答える
9

シンプルなJavaScriptを使用したiframeにいる場合、サイトをロードしないように依頼するのも非常に簡単です。たとえば、ツイッターはこれを行います

<script type="text/javascript">
//<![CDATA[
    if (window.top !== window.self) {
        document.write = "";
        window.top.location = window.self.location;
        setTimeout(function () {
            document.body.innerHTML = '';
        }, 1);
        window.self.onload = function (evt) {
            document.body.innerHTML = '';
        }; 
    }
//]]>
</script>

ここではコンソール エラーは表示されませんでした。

ヤフー!JavaScript は難読化されていますが、このスニペットで確実に何かが削除されていることがわかります。(コードはヤフーサイトより引用)

if(self!==self.top){b=function(){if(g.readyState=="complete"){f.remove(g,e,b);
于 2012-04-22T13:39:10.650 に答える
7

Web ページをホストしているサイトが安全なHTTPS接続の使用を強制している場合、一部のブラウザー (確かにクロム) では、すべてのネットワーク リソースHTTPSも同様に使用する必要があります。

現在の iframe の URL は HTTP を使用していますsrc="http://yahoo.com"

HTTPS を使用してみてください。src="https://yahoo.com"

于 2017-01-10T17:43:55.460 に答える
4

実際、yahoo、google などの Web サイトでは、サイトへの iframe を許可していません。ウェブサイトを表示するために iframe をブロックする

于 2012-07-14T13:45:30.123 に答える