[解決済み] ドメインをまたいでwindow.postMessageを使用するにはどうしたらよいですか?
質問
のポイントは何でしょうか? window.postMessage のポイントは、異なるドメインでホストされているウィンドウ/フレーム間の安全な通信を可能にすることであるように思えますが、実際には、それは を許可します。 を許可していないようです。
以下はそのシナリオです。
-
iframe> を埋め込む (
src
ドメインBに * ) ドメインAのページで - iframe>は、ほとんどが<script>タグであり、その実行の最後には...。
- window.postMessage()を呼び出す。 some_data , ページ_on_A )
その <iframe> は間違いなくドメイン B のコンテキストにあり、その <iframe> に埋め込まれた javascript が正しく実行され、次のように呼び出されることを確認しました。
postMessage
を正しい値で呼び出していることを確認しました。
Chromeでこのエラーメッセージが表示されます。
へのメッセージの投稿ができません。 A . 受信者はオリジン B .
以下は、Aのページにメッセージイベントリスナーを登録するコードです。
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
を呼び出すことも試してみました。
window.postMessage(some_data, '*')
を呼び出してみましたが、エラーを抑制するだけでした。
私はここでポイントを逃しているだけでしょうか、window.postMessage(...)はこのために意図されていないのでしょうか? それとも、私がひどく間違ったやり方をしているだけなのでしょうか?
*Mime-type text/html, which it must remain.
どのように解決するのですか?
Chrome 5.0.375.125 で動作する例です。
Bページ(iframeコンテンツ)です。
<html>
<head></head>
<body>
<script>
top.postMessage('hello', 'A');
</script>
</body>
</html>
を使うことに注意してください。
top.postMessage
または
parent.postMessage
ではなく
window.postMessage
ここで
Aというページです。
<html>
<head></head>
<body>
<iframe src="B"></iframe>
<script>
window.addEventListener( "message",
function (e) {
if(e.origin !== 'B'){ return; }
alert(e.data);
},
false);
</script>
</body>
</html>
AとBは次のようなものでなければなりません。
http://domain.com
EDITです。
から
別の質問
を見ると、ドメイン(ここではAとB)には必ず
/
に対して
postMessage
が正しく動作するようにします。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?