2

クロス ドメインの iframe ハックで問題が発生しました。

ページに別の iframe "if2" を含む iframe "if1" があります。

「トップ」ページはドメイン A で実行され、if1 のページはドメイン B で実行され、if2 のページはドメイン A で実行されます。

私がやりたいことは、if1 で認証を実行し、結果トークンを if2 の URL にハッシュとして渡し、if2 をロードすることです。if1 のページが読み込まれると、トークンは既に認証されているため、次のように既に生成された URL を使用して if2 を追加しました。

<iframe name="if2" id="if2" src="http://example.com/testing#token=8927348962028" onload="javascript:alert('loaded');" onerror="javascript:alert('unable to load iframe');" ></iframe>

今、if2 はまったくロードされず、ただ白いままです。「iframeを読み込めません」というアラートが常に表示されます。ただし、これは if1 が「トップ」ページに埋め込まれている場合にのみ発生します。ブラウザの別のタブで if1 のコンテンツをロードするだけで、if2 が完全にロードされます。

第 2 レベルの iframe が読み込まれないようにするポリシーはありますか? または、何か不足していますか?

4

1 に答える 1

5

私の問題の解決策を見つけました。

ページ B をロードする iframe を使用してページ A をロードし、ページ A をロードする iframe を再度ロードすると、ループが発生し、ページ A がページ B をロードするなどの原因になります。

私の場合、ブラウザーは 2 番目の iframe (ページ A を再度読み込む iframe) の読み込みを停止しました。これは、この種のループを防ぐための通常の動作のようです。

?innerframe=true パラメーターを if2 の URL に追加し、そのパラメーターが設定されている場合に if1 が読み込まれないようにしました。このようにしてループが消え、問題もなくなります。

@Rune: ご協力ありがとうございます。fiddle へのリンクは、これを理解するのに非常に役立ちました。

于 2013-01-23T13:45:14.363 に答える