ドキュメント間メッセージ通信により、iframe、タブ、ウィンドウ間の安全なクロスソース通信が保証されます。これは、メッセージを送信する標準的な方法として postMessage API を定義します。 postMessage を使用してメッセージを送信するのは非常に簡単です。コードは次のとおりです。
chatFrame.contextWindow.postMessage('Hello,world','http://www.example.com');
受信時メッセージを表示するには、「イベント処理関数の追加」ページをクリックするだけです。メッセージが到着すると、メッセージのソースがチェックされて、メッセージを処理するかどうかが決定されます。
メッセージ イベントは、データとオリジン属性を持つ DOM イベントです。 data 属性は送信者によって配信される実際のメッセージであり、origin 属性は送信元です。
postMessage API は、同じオリジンのドキュメント間で通信できるだけでなく、ブラウザがオリジナル以外の通信を許可していない場合にも役立ちます。 postMessage は、その一貫性と使いやすさにより、同じ生成元のドキュメント間で通信する場合にも推奨されます。 postMessage API は、HTML5 Web ワーカーと通信する場合など、JavaScript 環境で通信する場合には常に使用する必要があります。
1.1 オリジンのセキュリティについて
HTML5 Rongguang では、ドメインのセキュリティを明確にし、改善するためにオリジンの概念を導入しています。オリジンは、ネットワーク上で信頼関係を確立するために使用されるアドレスのサブセットです。ソースはルール (スキーム)、ホスト (ホスト)、およびポート (ポスト) で構成されます。
ソースの概念ではパスは考慮されません。
HTML5 はソースのシリアル化を定義します。ソースは、API およびプロトコルでは文字列として表示されます。
PostMessage セキュリティ ルールにより、メッセージが意図しないソース ページに配信されないことが保証されます。メッセージを送信するとき、受信者のソースを指定するのは送信者です。送信者が postMessage を呼び出すために使用するウィンドウに特定のオリジンがない場合 (たとえば、ユーザーが別のサイトにジャンプした場合)、ブラウザはメッセージを配信しません。
同様に、メッセージを受信すると、送信者のソースもメッセージの一部として含まれます。偽造を避けるために、メッセージのソースはブラウザによって提供されます。受信者は、どのメッセージを処理し、どのメッセージを無視するかを決定できます。ホワイトリストを保持し、信頼できるソースからのメッセージのみを処理するようにブラウザーに指示できます。
サードパーティからの文字列は決して評価しないことが最善です。さらに、アプリケーション内部の文字列を処理するために eval メソッドを使用することは避けてください。 JSON は、window.JSON または json,.org パーサー経由で使用できます。
1.2 ブラウザによるドキュメント間メッセージ通信のサポート
一般的なアプローチは、XMLHttpRequest オブジェクトに withCredentials 属性が存在するかどうかを検出することです。
- var xhr = new XMLHttpRequest(); if (typeof xhr.withCredentials === 未定義) { //クロスオリジン XMLHttpRequest をサポートしません } else { //クロスオリジンをサポートします起点 XMLHttpRequest }
ヒント HTML5 で定義された MessageEvent インターフェイスは、HTML5 WebSocket および HTML5 WebWorkers の一部でもあります。 HTML5の通信機能では、MessageEventインターフェースと同じAPIを使用してメッセージを受信します。 EventSource API や Web Workers などの他の通信 API も、MessageEvent インターフェイスを使用してメッセージを配信します。
1.4 postMessage API を使用したアプリケーションの作成
メッセージの送信
対象ページの window オブジェクトで postMessage() 関数を呼び出すことでメッセージを送信できます。 コードは次のとおりです。以下:
- window.postMessage("Hello, world", "ポルタ"); >
- document.getElementsByTagName("iframe")[0].contentWindow.postMessage("Hello, world"、「ちゃ」);
メッセージを受信するときは、ページにイベント ハンドラーを追加するだけで済みます。メッセージが到着すると、メッセージのソースがチェックされて、メッセージを処理するかどうかが決定されます。
- window.postMessage("Hello, world", "ポルタ"); >
例: ルールが異なるため (https と http など)、ページのソースが異なります。
ソースの概念ではパスは考慮されません。たとえば、単なるパスではなく、それらは同じソースです。
ソースは、API およびプロトコルでは文字列として表示されます。
-
var OriginWhiteList = ["ポルタ", "ゲーム" 、""]; 関数 checkWhiteList(origin) { for (var i=0; i
if (origin === OriginWhiteList[i]) { return true } } return false; } function messageHandler(e) { if (checkWhiteList(e.origin)) { processMessage(e.データ); } else { //不明なソースからのメッセージを無視する } }
2 XMLHttpRequest Level2
XMLHttpRequest の改良版として、XMLHttpRequest Level2 は機能が大幅に向上しました。主に 2 つの側面に焦点を当てます: (1) クロスソース XMLHttpRequests; オリジン リソース共有 (クロスオリジン リソース共有) はクロスオリジン XMLHttpRequest を実装します。
クロスオリジン HTTP リクエストには、サーバーに HTTP リクエストのソース情報を提供する Origin ヘッダーが含まれています。ヘッダーはブラウザーによって保護されており、アプリケーション コードによって変更することはできません。基本的に、クロスドキュメントメッセージ通信におけるメッセージイベントのorigin属性と同じ効果があります。
CORS 仕様では、証明書の申請リクエストや GET と POST 以外の OPTIONS プリフライト リクエストなどの一部の機密動作は、この動作がサポートされるかどうかを判断するためにブラウザからサーバーに送信され、許可される必要があります。これは、正常な通信には CORS 機能を備えたサーバーによるサポートが必要な可能性があることを意味します。
2.2 進行状況イベント
新しいバージョンの XMLHttpRequest における最も重要な API の改善点の 1 つは、進行状況への応答の追加です。
XMLHttpRequest Level2 は、意味のある名前 Progress を使用して進行状況イベントに名前を付けます。
3 高度な機能3.1 構造化データ
postMessage の初期バージョンは文字列のみをサポートします。それ以降のバージョンでは、JavaScript オブジェクト、キャンバス imageData、ファイルなどの他のデータ型がサポートされました。ブラウザごとにサポートされる仕様が異なるため、オブジェクト タイプのサポートも異なります。
3.2 フレームバスティング
フレームバス技術を使用すると、特定のコンテンツが jframe にロードされないようにすることができます。アプリケーションは、最初に、そのウィンドウが最も外側のウィンドウ (window.top) であるかどうかを検出し、そうでない場合は、そのウィンドウを含むフレームから飛び出します。
JavaScript コード
コンテンツをクリップボードにコピーします
- if(window!=window.top)
- {
- window.top.location=場所
- }
新しいバイナリ API (Typed Array など) をサポートするブラウザは、XMLHttpRequest を使用してバイナリ データを送信できます。レベル 2 仕様では、Blob オブジェクトと ArrayBuffer オブジェクトを送信するための send() メソッドの呼び出しをサポートしています
- var a = new Uint8Array([8,6,7,5,3, 0,9]); var xhr = new xhr.open("POST", "/data/ ", true); console.log(a); xhr.send(a.buffer);

HTML5のコア機能には、セマンティックタグ、マルチメディアサポート、フォームエンハンスメント、オフラインストレージ、ローカルストレージが含まれます。 1。コードの読みやすさやSEO効果を改善するなどのセマンティックタグ。 2.マルチメディアサポートは、メディアコンテンツを埋め込むプロセスとタグを簡素化します。 3.フォームエンハンスメント新しい入力タイプと検証プロパティを導入し、フォーム開発を簡素化します。 4.オフラインストレージとローカルストレージは、ApplicationCacheとLocalStorageを通じてWebページのパフォーマンスとユーザーエクスペリエンスを改善します。

html5isamajorrevision ofhtmlstandardthatedatedatizeizeswebdevelovement byintunwingnewsemanticelementsandcapabilities.1)itenhancesscodereadability and.2)html5EnableSricher、InteractiveEnceEnceEnceEncedienceEnceDirectembe、and.2)

H5の高度なヒントには以下が含まれます。1。複雑なグラフィックスを使用して描画します。2。ウェブワーカーを使用してパフォーマンスを向上させます。これらのヒントは、開発者がよりダイナミックでインタラクティブで効率的なWebアプリケーションを構築するのに役立ちます。

H5(HTML5)は、新しい要素とAPIを介してWebコンテンツと設計を改善します。 1)H5はセマンティックタグ付けとマルチメディアサポートを強化します。 2)キャンバスとSVGを導入し、Webデザインを濃縮します。 3)H5は、新しいタグとAPIを介してHTML機能を拡張することにより機能します。 4)基本的な使用には、それを使用したグラフィックの作成が含まれ、高度な使用法にはwebstorageapiが含まれます。 5)開発者は、ブラウザの互換性とパフォーマンスの最適化に注意を払う必要があります。

H5は多くの新しい機能と機能をもたらし、Webページのインタラクティブ性と開発効率を大幅に改善します。 1。SEOの強化などのセマンティックタグ。 2.マルチメディアサポートは、オーディオとビデオの再生とタグを簡素化します。 3. Canvas Drawingは、動的なグラフィックスの描画ツールを提供します。 4.ローカルストレージは、LocalStorageとSessionStorageを介してデータストレージを簡素化します。 5. Geolocation APIは、ロケーションベースのサービスの開発を促進します。

HTML5は5つの重要な改善をもたらします。1。セマンティックタグにより、コードの明確性とSEO効果が向上します。 2.マルチメディアサポートは、ビデオとオーディオの埋め込みを簡素化します。 3。フォームエンハンスメントは、検証を簡素化します。 4.オフラインおよびローカルストレージにより、ユーザーエクスペリエンスが向上します。 5。キャンバスとグラフィック機能は、Webページの視覚化を強化します。

HTML5のコア機能には、セマンティックタグ、マルチメディアサポート、オフラインストレージ、ローカルストレージ、フォームエンハンスメントが含まれます。 1。コードの読みやすさとSEO効果を改善するためのセマンティックタグなど。 2.ラベルでマルチメディアの埋め込みを簡素化します。 3。アプリケーションキャッシュやLocalStorageなどのオフラインストレージとローカルストレージは、ネットワークのない操作とデータストレージをサポートします。 4.フォームエンハンスメントでは、処理と検証を簡素化するための新しい入力タイプと検証プロパティを導入します。

H5は、さまざまな新機能と機能を提供し、フロントエンド開発の機能を大幅に向上させます。 1.マルチメディアサポート:メディアを埋め込んで要素を埋め込み、プラグインは必要ありません。 2。キャンバス:要素を使用して、2Dグラフィックとアニメーションを動的にレンダリングします。 3。ローカルストレージ:ユーザーエクスペリエンスを改善するために、ローカルストレージとセッションストレージを介して永続的なデータストレージを実装します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Dreamweaver Mac版
ビジュアル Web 開発ツール

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