2009-07-15 14 views
2

私は、あるドメインからロードされた親フレームと別のドメインの含まれているフレームからなるフレームセットを持つ問題があります。含まれるドメインは、フレームセットがロードされる前にクッキーも設定します。しかし、ほとんどのブラウザで適用される「同じorgin」ポリシーのため、含まれているフレームは、親と同じドメインに属していない場合はCookieを渡しません。同じオリジンポリシーの問題を回避する

残念ながら私は、親フレーム(またはそのURL)を制御することはできませんし、含まれるフレームのURLが効果的に静的です。したがって、含まれているサイトに情報を渡す唯一の方法は、クッキーによるものです。

私が出ている唯一の解決策は、親フレームに含まれるドメインをリロードすることですが、これは最初の場所でフレームを使用しての値の一部を否定します。

誰もがこの問題の回避策がありますか?

答えて

1

これを実行する方法はたくさんあります。

  1. を タグを使用して、共通のソースから親と子の両方の負荷 スクリプトを持っている:ここで私が使用した2があります。 でこのようにロードされたスクリプトは、同一生成元 問題を持っていない、と彼らは を返すデータは、ドキュメントオブジェクト の一部となり、文書によってロードされた他のスクリプト と対話することができます(これはAJAST作品 方法です) 。
  2. 親ドメインにリバースプロキシを作成し、このプロキシ経由でフレームをロードします。ブラウザには、両方が同じドメインから配信されているようです。欠点は、これがキャッシングに影響し、使用している可能性のあるコンテンツ配信ネットワーク(たとえば、Akamai)をバイパスすることです。
+0

残念ながら、私は親ドメインだけ子ドメインを制御できません。 –

2

Same Origin Policyを回避する方法がいくつかあり、お互いに話すことができません。両方のサーバーを制御する場合は、Flash's crossdomain.xml fileを使用できます。いずれかのサーバーを制御していない場合、またはJavaScriptを使用する場合は、javaまたはpythonまたはphpなどの「クロスドメインプロキシ」を使用する必要があります。

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

1

uは別のフレームからのメッセージを送信するためにクロスドメインメッセージングAPIを使用することができ、これにでもう一つの考えが、。ここにはexamplethisを詳しく読んでください。

+0

素晴らしい例です。試してみるべき – Kalanamith

関連する問題