私は 2 つのローカル ドメインで作業しており、両方のドメインの iFrame を使用してシステムをlocalhost
テストdomain1
しています。postMessaging
window
メッセージを送信して返信を受信するために、(両方のドメインで)それぞれの要素を正しく識別できます。私の問題は、postMessage で送信された 2 番目のパラメーター (メッセージの送信元の URL) が、それぞれの他のドメインのリスナーによって受け入れられないことです。送信者が であると宣言した場合にのみ"*"
、メッセージが機能します。
これは、外部ドメインにメッセージを送信しても機能しません:
// targetWindow = window of foreign domain
targetWindow.postMessage({
"foo": "bar"
}, window.location.href);
これは機能します:
// targetWindow = window of foreign domain
targetWindow.postMessage({
"foo": "bar"
}, "*");
送信ドメインへの返信についても同じです ( を使用window.top
)。これは動作しません:
window.top.postMessage({
"baz": "bam"
}, window.location.href.split("?")[0]);
これは次のことを行います:
window.top.postMessage({
"baz": "bam"
}, "*");
質問:
なぜそうなのですか? 認証を有効にするには、送信 URLを 2 番目のパラメーターとして指定する必要があると考えました。その場合、イベントがトリガーされないのはなぜですか? 私が localhost/domain1 で作業している理由は何ですか?
手伝ってくれてありがとう!