ホームページ ウェブフロントエンド H5 チュートリアル HTML5でクロスドメイン通信を行う方法

HTML5でクロスドメイン通信を行う方法

Jan 11, 2018 am 09:24 AM
h5 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

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

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

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

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

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

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

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

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

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

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

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

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

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

See all articles