0

内部に iframe を含む jQuery UI ダイアログがあります。親と同じドメインにない iframe 内に別のページを読み込んでいます。ページは、System1 (親) と System2 (iframe 内の子) の 2 つの異なるシステムです。

私がやりたいことは、JS/jQuery を呼び出して親ページの実際のダイアログ ウィンドウを閉じる iframe ページにボタンを追加することです。

彼らがここで行うようなこと: Iframe から jQuery UI ダイアログを閉じる

問題は、同じオリジンポリシーにより、両方のページが同じドメインにある場合にのみ機能することです

これが私の現在のボタンで、両方のシステムが同じドメインにある場合に正常に機能します。

<input type="submit" onclick="$('#myDialog', window.parent.document).hide();" value="X" />

サイト/システムは実際には同じサーバーとドメイン上にある可能性がありますが、ロード バランサーを使用して 3 つの異なるサーバー間でトラフィックを移動しています。つまり、2 つのシステムがあり、それぞれが 3 つのサーバーで実行されています。以下では、ポートは異なるシステムに対応しています (91 = システム 1、92 = システム 2)。

いえ

これらのシステムは、http://System1.myHost.comおよびhttp://System2.myHost.comに移動することによって負荷分散され、ロード バランサーがユーザーを送信するサーバーを決定します。

問題は、ユーザーがhttp://System1.myHost.com (たとえば、実際には Server1 にある) にアクセスし、jQuery/iframe が一致する System2 サイト (この場合は Server1 にもある) を読み込もうとすると、Javascript が考えるそのhttp://System1.myHost.com (実際にはhttp://Server1.myHost.com:91 ) とhttp://Server1.myHost.com:92は 2 つの異なるドメインにあります。

どういうわけか、ロードバランサーのアドレスが実際のサーバーのアドレスと同じであると思うようにJavascriptをだます必要がありますが、方法がわかりません....

これを解決する方法についてのアイデアはありますか? =)

4

1 に答える 1

0

JavaScript を「だまして」同じオリジン ポリシーを無視させることはできません。

ロード バランシングは、エンド ユーザーに対して透過的である必要があります。負荷分散されたサーバーの前に、Velocity や Memcached などのフロントエンド キャッシュ システムを使用することを検討する必要があります。

于 2013-01-15T14:59:59.870 に答える