次の単純な iFrame コードを使用して Yahoo をロードしていますが、とにかくロードされません。Chrome Inspector では、URL ステータスが最初に 301 と表示され、次にキャンセルされます。なぜそれが起こっているのですか?
<iframe name="iframe1" src="http://yahoo.com"></iframe>
ログに次のようなエラー メッセージが表示される可能性があります。
"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 を参照してください。
シンプルな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);
Web ページをホストしているサイトが安全なHTTPS
接続の使用を強制している場合、一部のブラウザー (確かにクロム) では、すべてのネットワーク リソースHTTPS
も同様に使用する必要があります。
現在の iframe の URL は HTTP を使用していますsrc="http://yahoo.com"
HTTPS を使用してみてください。src="https://yahoo.com"
実際、yahoo、google などの Web サイトでは、サイトへの iframe を許可していません。ウェブサイトを表示するために iframe をブロックする