2012-04-28 13 views
6

空で、私はiframesrcを作成し、文書に追加するには、以下のJavaScriptを使用しています:内容は私のローカルホスト上

$('#preview').html('<iframe src="http://google.com/"></iframe>'); 

iframeのショーではなく、コンテンツ。放火犯で、それだけだ。

<iframe src="http://google.com/"> 
    <html> 
     <head></head> 
     <body></body> 
    </html> 
</iframe> 

私は、コンソール上で$('iframe').attr('src','http://google.com/');を実行すると、ブラウザがロード(「google.comを待っています...」と言う)、その後、IFRAMEの内容を更新しているようです。しかし再び、それは空です。

ローカルページに設定すると、コンテンツが読み込まれます。

これは元のポリシーが同じであるためですか?私はそれについてあまり知られていない。一部のサイトでは、自分のドメインに属していないsrcをiframeに含めることは大丈夫だと言われていて、いくつかのサイトでは混乱しています。

ところで、私はまだlocalhostでテストしているので、これをどこかのサーバにアップロードすればこの作業はできますか? (iframeのsrcはまだ別のドメインにあります)

ヘルプ?

答えて

12

ブラウザのエラーコンソールをチェックしたい場合は、このメッセージを見ていると思います:ディスプレイはX-フレーム・オプションによって禁じられているため

は、文書を表示することを拒否しました。

これはあなたの間違いではなく、Googleの意図的な行動です。

X-Frame-Optionsのための2つのオプションがありません:

  • deny - 何の枠内でのレンダリング、および
  • sameorigin - ノーレンダリング起源の不一致

参照している場合:

+0

ありがとうございました。3番目のリンク(SO)は、Googleマップをiframeに読み込む際に役立ちました。 – Obay

+0

あなたは大歓迎です、私は助けてくれることをうれしく思います=) –

4

はい発信元ポリシーが同じであるため、コードは禁止されています。時のクロスドメインの問題である、google.com、あなたが呼んでいる今

Compared URL        Outcome Reason 
--------------------------------------------------------------------------------------------- 
http://www.example.com/dir/page.html  Success Same protocol and host 
http://www.example.com/dir2/other.html  Success Same protocol and host 
http://www.example.com:81/dir2/other.html Failure Same protocol and host but different port 
https://www.example.com/dir2/other.html Failure Different protocol 
http://en.example.com/dir2/other.html  Failure Different host 
http://example.com/dir2/other.html   Failure Different host (exact match required) 
http://v2.www.example.com/dir2/other.html Failure Different host (exact match required) 

:あなたは、アイフレームを通じてページを呼び出すときhere

すると、あなたはおそらく次のような結果を持つことができますが、ドメインhttp://www.example.comを所有していると読みます君は。このような問題を回避するには、JSONPがお手伝いします。クロスドメインからJSONを取得するには、<script>のオープンスクリプトポリシーを使用します。

関連する問題