5

2つのWebアプリケーション設定があります。

david.example.comjohn.example.com _

デビッドはジョンに新しいウィンドウを開きます。

window.open('john.example.com');

Johnは、入力要素をDavidに戻したいと考えています。

$("#input", window.opener.document).val("Hello David.");

私の問題は、クロスドメインスクリプティングのセキュリティのため、これが最新のブラウザでは機能しないことです。document.domainまた、DavidとJohnの両方で異なるドメインの組み合わせに設定しようとしましたが、成功しませんでした。

これが機能するのは、Johnがオンでexample.com、両方がにdocument.domain設定されている場合のみexample.comです。ただし、example.comは当社のメインWebサイトであり、解決策としては利用できません。

では、セキュリティを重視するすべての最新のブラウザでソリューションを機能させながら、上記の例を実行する方法はありますか?

ノート

  • example.comはそのすべてのサブドメインを管理しています。
  • DavidとJohnは別々のWebアプリケーションであり、同じサブドメインでホストすることはできません。
4

2 に答える 2

8

両方の DOM で document.domain を設定している限り、これを実行できるはずです。

document.domain = location.host.replace(/^.*?([^.]+\.[^.]+)$/g,'$1');

クレジット: Martin Jespersen

于 2011-03-03T16:45:53.970 に答える
-1

クロスドメイン通信に常に iframe を使用し、ハッシュバング経由でメッセージを送信できます。例については、これを参照してください。基本的には、Facebook コネクトなどの仕組みです。あるアプリが別のウィンドウを開く場合、通常のウィンドウでも同じことができると思います。

于 2011-03-03T16:43:57.013 に答える