2

あるドメインからロードされた親フレームと別のドメインからの包含フレームで構成されるフレームセットがあるという問題があります。含まれるドメインは、フレームセットがロードされる前に Cookie も設定します。ただし、ほとんどのブラウザーで適用される「同一生成元」ポリシーにより、含まれているフレームは、親と同じドメインからのものでない場合、Cookie を渡しません。

残念ながら、親フレーム (またはその URL) を制御することはできず、含まれているフレームの URL は事実上静的です。そのため、含まれているサイトに情報を渡す唯一の方法は、Cookie を使用することです。

私が思いついた唯一の解決策は、親フレームに含まれているドメインをリロードすることですが、これはそもそもフレームを使用する価値の一部を無効にします。

誰かがこの問題を回避するより良い方法を持っていますか?

4

4 に答える 4

2

iframe の相互通信を妨げているSame Origin ポリシーを回避するには、いくつかの方法があります。両方のサーバーを制御している場合は、Flash の crossdomain.xml ファイルを使用できます。サーバーの 1 つを制御しない場合、または JavaScript を使用したい場合は、javaまたはpythonまたはphp用のこのような「クロスドメイン プロキシ」を使用する必要があります。

Cross-Site XHRは別のオプションですが、すべてのブラウザーでサポートされているわけではありません。

于 2010-05-26T08:19:55.547 に答える
1

これについてもう 1 つ考えてみると、クロス ドメイン メッセージング API を使用して、あるフレームから別のフレームにメッセージを送信できます。ここにがあります!詳しくはこちらをご覧ください。

于 2012-11-07T05:47:20.443 に答える
1

これを行うには多くの方法があります。私が使用したのは次の2つです。

  1. タグを使用して、親と子の両方が共通のソースからスクリプトをロードするようにします。この方法でロードされたスクリプトには同一生成元の問題はなく、それらが返すデータはドキュメント オブジェクトの一部になり、ドキュメントによってロードされた他のスクリプトと対話できます (これが AJAST の動作方法です)。
  2. 親ドメインにリバース プロキシを作成し、このプロキシ経由でフレームを読み込みます。ブラウザには、両方が同じドメインから提供されているように見えます。欠点は、これがキャッシングに影響を与える可能性があり、使用している可能性のあるコンテンツ配信ネットワーク (Akamai など) をバイパスすることです。
于 2009-07-15T12:59:35.707 に答える
1

postMessage を使用して HTML 5 でこれを行う正しい方法もあります。ここを参照してください: http://ajaxian.com/archives/cross-window-messaging-with-html-5-postmessage

于 2009-07-15T13:01:56.970 に答える