2

安全でないページから自分のサイトのユーザーを安全に認証できるようにしたいと考えています。そこでwindow.open()、安全なサインインフォームを開くポップアップを作成しました。計画では、ユーザーがサインアップまたは認証した後、ポップアップが閉じられ、親ウィンドウが更新されます。

ポップアップを閉じると問題なく動作しますが、クロス サイト スクリプティングのルールにより、親を更新しようとすると、次のようになります。

Unsafe JavaScript attempt to access frame with URL http://localhost/ from frame with URL https://localhost/signin_popup. The frame requesting access has a protocol of 'https', the frame being accessed has a protocol of 'http'. Protocols must match.

onunload親を更新する準備が整う前に、認証ポップアップがいくつかのページを通過する可能性があるため、親で単にサブスクライブすることはできません。現在、カスタム イベントを親からポップアップ ウィンドウ オブジェクトにバインドし、ポップアップ内からそれらを起動できるかどうかを確認しようとしていますが、役に立ちません。

そう...

ポップアップ ウィンドウを親ウィンドウと対話させるにはどうすればよいですか? または、プロトコルが一致しない場合にポップアップ ウィンドウのカスタム イベントに親ウィンドウをサブスクライブさせるにはどうすればよいですか?

4

1 に答える 1

2

-APIを使用してクロスオリジン ウィンドウ通信を実装できるはずです。postMessage

別のウィンドウにメッセージを投稿するには:

otherWindowRef.postMessage( 'message', origin );

次に、別のウィンドウでそれを受け取ります。

window.addEventListener( "message", function() {
   //message was received 
}, false );

もう一方のウィンドウも同様.postMessageにメイン ウィンドウに戻り、メイン ウィンドウはメッセージ イベントを受け取ります。

于 2012-11-26T19:42:23.430 に答える