HTML5でクロスドメイン通信を行う方法
今回は、HTML5 を使用してクロスドメイン通信を行う方法と、クロスドメイン通信に h5 を使用する方法を説明します。 h5 クロスドメイン通信の 注意事項 は何ですか? 以下は実際のケースです。見てみましょう。
私は最近仕事でニーズに遭遇しました。シナリオは次のとおりです。h5 ページがプレビュー モジュールとして PC ページに埋め込まれており、ユーザーは PC ページ上でいくつかの操作を実行でき、h5 ページはそれに応じて変更を加えます。プレビュー効果。
ここで最初に思いつくのは、iframe を使用して h5 ページを PC の Web ページに埋め込み、PC が postMessage メソッドを通じて変更されたデータを iframe に送信し、iframe に埋め込まれた h5 がデータを受信することです。 addEventListener を通じて、データに応答性の変更を加えます。
postMessage の使用方法の概要は次のとおりです。API は非常に単純です。
otherWindow.postMessage(message, targetOrigin, [transfer]);
otherWindow はターゲット ウィンドウの reference であり、現在のシナリオでは iframe.contentWindow です。
message は送信されるメッセージです。 Gecko 6.0 より前では、メッセージは String である必要があり、それ以降のバージョンでは、オブジェクトを自分でシリアル化せずに直接送信できます。
targetOrigin はターゲット ウィンドウの起点を表し、その値は文字列 "*" (無制限を示す) にすることができます。または URI 。 メッセージ送信時、ターゲット ウィンドウのプロトコル、ホスト アドレス、またはポートのいずれかが targetOrigin で指定された値と一致しない場合、メッセージは送信されません。これら 3 つが完全に一致する場合にのみメッセージが送信されます。送信。機密データの場合、ターゲット ウィンドウの起点を設定することが非常に重要です。postMessage() が呼び出されると、メッセージ
イベントがターゲット ウィンドウに配信されます。このインターフェイスにはメッセージ イベントがあり、いくつかの重要な属性があります: 1.data: 名前が示すように、渡されるメッセージです
2.source: メッセージを送信するウィンドウ オブジェクト3.origin: メッセージのソースメッセージを送信するウィンドウ (プロトコル + ホスト + ポート番号)
このようにして、クロスドメイン メッセージを受信したり、同様の方法でメッセージを送り返すこともできます。
オプションのパラメータ転送は、メッセージと同時に渡される一連の Transferable オブジェクトであり、これらのオブジェクトの所有権はメッセージの受信者に転送され、送信者は所有権を保持しなくなります。
その後、iframe が初期化されると、iframe の参照を取得し、次のコードを通じてメッセージを送信できます:
// 注意这里不是要获取iframe的dom引用,而是iframe window的引用 const iframe = document.getElementById('myIFrame').contentWindow; iframe.postMessage('hello world', 'http://yourhost.com');
iframe では、次のコードを通じてメッセージを受信できます。
window.addEventListener('message', msgHandler, false);
受信時に、必要に応じてメッセージの送信元をフィルタリングして、不正なドメイン名を持つメッセージの受信によって引き起こされる XSS 攻撃を回避できます。
最後に、コードを再利用するために、メッセージの送受信がクラスにカプセル化され、メッセージ タイプ API がシミュレートされるため、非常に使いやすくなります。具体的なコードは次のとおりです:
export default class Messager { constructor(win, targetOrigin) { this.win = win; this.targetOrigin = targetOrigin; this.actions = {}; window.addEventListener('message', this.handleMessageListener, false); } handleMessageListener = event => { if (!event.data || !event.data.type) { return; } const type = event.data.type; if (!this.actions[type]) { return console.warn(`${type}: missing listener`); } this.actions[type](event.data.value); } on = (type, cb) => { this.actions[type] = cb; return this; } emit = (type, value) => { this.win.postMessage({ type, value }, this.targetOrigin); return this; } destroy() { window.removeEventListener('message', this.handleMessageListener); } }
これらの事例を読んだ後は、方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
関連記事:
H5の全要素と基本構文のまとめH5でビデオタグとオーディオタグとプログレスバーを使用する方法H5にドラッグアンドドロップ機能を実装する方法以上がHTML5でクロスドメイン通信を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。
