1. 程式人生 > >HTML5 postMessage 訊息傳輸與 POST 跨域通訊

HTML5 postMessage 訊息傳輸與 POST 跨域通訊


HTML5 的 postMessage 方法可實現不同窗體間互相通訊。

postMessage 支援實現跨文件訊息傳輸(Cross Document Messaging),並且可跨域傳輸資訊。Internet Explorer 8, Firefox 3, Opera 9, Chrome 3和 Safari 4 以上版本瀏覽器都已支援 postMessage。

1. postMessage 功能簡介

postMessage 主要包含兩個 API:

1).訊息監聽:onmessage
2).訊息傳送:postMessage

使用步驟也很簡單:

1.1.監聽傳送過來的訊息

1 window.addEventListener('message', onMessage, false);
2
3 var onMessage = function(){
4 console.log(e, e.data);
6 return false;
7 }
8 // 訊息處理...
9 }

注意:

e.data 即接收到的資訊。
由於該監聽可接收任意傳送過來的訊息,故一般應對 e.origin 來源進行檢測,如果不是預設的訊息來源,應予以拒絕處理。

1.2.向其他窗體傳送訊息

首先獲取要傳送訊息的窗體物件(如iframe),然後向該物件傳送資訊

1 var iframeWin = document.getElementsByTagName('iframe')[0].contentWindow;
2 iframeWin.postMessage(
'hello world!'"*");

注意:

postMessage 包含兩個引數,第一個引數為傳送的訊息內容,為字串型別。第二個為來源域限制。即限制接收窗體的 URL。

進行跨文件訊息傳送,首先要獲取傳送物件窗體。所以 postMessage 常用在從當前頁建立/開啟新窗體或新的 worker 執行緒中,實現雙方通訊。請與志文工作室一起來看如下使用示例。

2. worker 多執行緒

訊息接收處理頁面:

01 <!DOCTYPE html>

相關推薦

HTML5 postMessage 訊息傳輸 POST 通訊

HTML5 的 postMessage 方法可實現不同窗體間互相通訊。 postMessage 支援實現跨文件訊息傳輸(Cross Document Messaging),並且可跨域傳輸資訊。Internet Explorer 8, Firefox 3, O

HTML5postMessage和addEventListener實現通訊

使用postMessage實現跨域的前提條件是一個頁面通過<iframe>呼叫另一個頁面,示例如下所示: 在這個示例中,通過outter.html呼叫inner.html 這是outter

利用HTML5的window.postMessage實現通訊

HTML5的window.postMessage簡述 postMessage是html為了解決跨域通訊,特別引入的一個新的API,目前支援這個API的瀏覽器有:Firefox, IE8+, Opera, Safari, Chrome。postMessage允許頁面中的多個iframe/window的通訊

PHP處理Ajax請求Ajax

通過 匹配 格式 als 表示 內容 求和 serve -o PHP判斷是否為Ajax請求 我們知道,在發送ajax請求的時候,可以通過XMLHttpRequest這個對象,創建自定義的header頭信息, 在jquery框架中,對於通過它的$.ajax, $.get, 或

postMessage解決通訊呼叫js問題

本文轉自:https://bbs.implug.cn/?thread-3.htm 平時做web開發的時候關於訊息傳遞,除了客戶端與伺服器傳值,還有幾個經常會遇到的問題: 多視窗之間訊息傳遞(newWin = window.open(…)); 頁面與巢狀的iframe訊息傳遞

AJaxJsonp訪問

目錄 一.JavaScript的AJax 二.JQuery的AJax 三.利用jsonp實現跨域訪問 一.JavaScript的AJax AJAX即“Asynchronous Javascript And XML”(非同步JavaScript和XML) 設計AJax使用的一種重要技術是XMLHttp

同源策略JS

為什麼要跨域 為了使用者的資訊保安,瀏覽器就引入了同源策略 那麼同源策略是如何保證使用者的資訊保安的呢? 如果沒有同源策略,你打開了你的銀行賬戶頁面A,又打開了另一個不相關的頁面B,這時候如果B是惡意網站,B可以通過Javascript輕鬆訪問和修改A頁面中的

ajaxjsonp的本質原理

ajax的基本概念 瞭解這個概念,首先得先知道同步互動與非同步互動 同步互動:客戶端瀏覽器給伺服器傳送一個請求,伺服器返回一個頁面,返回的頁面會把之前的頁面覆蓋掉,我們把這種互動方式稱為同步互動 非同步互動:就是可會斷瀏覽器給伺服器傳送一個請求,伺服器返回

AJAX POST& 解決方案

跨域是我在日常面試中經常會問到的問題,這詞在前端界出現的頻率不低,主要原因還是由於安全限制(同源策略, 即JavaScript或Cookie只能訪問同域下的內容),因為我們在日常的專案開發時會不可避免的需要進行跨域操作,所以跨域能力也算是前端工程師的基本功之一。   和大多數跨域的解決方案一樣,JSON

vue解決POST請求

一.設定config/index.js || proxyTable新增proxyTable: {     '/api': {            target: 'http://192.168.48.239:8080/ydzl',            changeOrigin: true,       

構建前端開發環境之----使用express處理POST請求

回顧 在上次的 文章中,實現了 開發環境的簡單的jsonp 處理,但是隻能處理 GET 請求,不支援 POST 請求。為了讓 模擬的效果更好一點,還要能處理 POST 跨域請求。 使用 CORS 處理跨域 在 express 中實現 CORS 的方法

關於前端解決post的問題

       網上post跨域解決的問題方案一籮筐,但是真正能用得上的我還真是一個沒看到,基本上都是基於jsonp的方案去解決跨域的問題,jsonp的原理我就不講了,網上介紹的多了去了,既然是jsonp了,那還談什麼post跨域問題了,一群標題黨,來自一個查了一天百度及論壇人

ajax post請求解決

一、使用 response.addHeader(“Access-Control-Allow-Origin”, “*”); 解決1、前端  2、後端:二、使用CORS 解決 1、跨域問題屬於後臺的安全攔截,跟客戶端沒關係,在java後臺,使用cors filter進行攔截處理,

html5通訊

一、簡單概要 web通訊(洋名:web messaging)是一種文件中獨立的瀏覽上下文間的DOM不會被惡意的跨域指令碼暴露資料分享方式。 得得得,術語啊什麼的,比看到鳳姐還頭疼。有必要把上面一句話拆開講: web通訊是一種資料分享方式(有屁話之嫌);通訊的主體是“瀏覽上下文”(這是納尼?);哦,“瀏覽上

iframe 利用postMessage 通訊

1.子頁面:http://localhost:7080/b.jsp <button onclick="send()">send</button> <script> window.addEventListener('message', f

egg.js post請求問題

使用Egg呼叫POST請求的時候,瀏覽器會觸發405報錯 npm i egg-cors --save config.default.js config.security = {

使用postMessage在不同iframe間傳遞消息

uncaught domain gin nload console 既然 als ole sage iframe同源策略 如果父窗口訪問一個不同域名的子窗口就會報錯: Uncaught DOMException: Blocked a frame with origin &

封裝一個postMessage庫,進行iframe互動

這是近期個人在開發chrome外掛時的其中一個小總結。還有很多沒有總結出來。因為目前外掛還在迭代中,(herry菌外掛,用於B站C站),屬於個人業餘的一個小專案。還有很多功能沒有實現,以及還需要再看能加上什麼功能。   封裝的postMessage庫 herryPostMessage.js

iframe通訊

簡述: window.postMessage方法,允許跨視窗通訊,不論這兩個視窗是否同源。 視窗都可以通過message事件,監聽對方的訊息。 語法: otherWindow.postMessage(message, targetOrigin, [transfer]); messag

前端通訊的幾種方式

一、JSONP 我們都知道script標籤src屬性中的連結卻可以訪問跨域的js指令碼,利用這個特性,服務端不再返回JSON格式的資料,而是返回一段呼叫某個函式的js程式碼,在src中進行了呼叫函式來獲取到資料,函式中的引數就是我們需要的資料,這樣實現了跨域。 基本思想是: 1、客戶端利