目錄
您好,我这里是http://www.yuetong.com/
您好,我这里是 http://my.bbs.com/
首頁 web前端 H5教程 HTML5跨域資訊互動技術之postMessage程式碼實例詳解

HTML5跨域資訊互動技術之postMessage程式碼實例詳解

Mar 16, 2017 pm 03:53 PM

我們知道傳統的HTML 規範中對於跨域的請求有這嚴格的限制,如果沒有這個限制,將會發生很可怕的事情,設想一個場景當你在公司上班打開公司內部的管理信息系統,同時你打開了另一個外部網頁頁面, 那個外部網頁中的動態腳本比如JS 腳本可以嗅探到你公司內部管理信息系統的內容,假如你公司的信息系統是一些敏感的信息時,其實你在不知不覺中已經洩漏了公司的訊息,由此可能將會造成給公司很大的損失,所以瀏覽器是阻止這些跨域訪問。

  但現實生活中有一些合理的跨網域網站間的交互,讀者可能知道 傳統HTML 規範中關於跨域的解決方法,
例如 iframe方式、jsonp方式等,今天我要說的是HTML5 中關於跨域資料互動的知識。
  
  HTML5中引入了 一個新的API 稱為 postMessage ,其實postMessage不管是否有跨域操作, 都建議使用postMessage 來傳遞訊息。
  
  廢話不多說,看一個Demo 先。
我們配置兩個網域 http://www.yuetong.com/
                 http://my.bbs.com/
在 http://www.yuetong.com/ 網域下新建 comm_main.html, 位址 為http://www.yuetong.com/comm_main.html
文件內容如下

 
nbsp;html>

    
    <meta>
    <title>跨站通信 当前域 http://www.yuetong.com</title>
    <script>
function sendMsg(){
    if(typeof window.postMessage == undefined){
        //
        alert("对不起 您的浏览器不支持 postMessage 特性");
        return false;
    }
    var msg = document.getElementById("message").value;
    document.getElementsByTagName("iframe")[0].contentWindow.postMessage(msg,"http://my.bbs.com");
}
var originWhiteList = ["http://my.bbs.com"];
function checkWhiteList(origin){
    for(var i=0; i< originWhiteList.length; i++){
        if(origin == originWhiteList[i]){
            return true;
        }
    }
    return false;
}
/** 接受消息 */
function messageHandler(e){
    if(checkWhiteList(e.origin)){
        processMessage(e.data);
    }else{
        // ignore message
    }
}
function processMessage(d){
    alert(d);
}
window.addEventListener("message", messageHandler, true);
    </script>


<h1 id="您好-我这里是http-www-yuetong-com">您好,我这里是http://www.yuetong.com/</h1>
<input>
<input>
<br>
<iframe></iframe>
<p></p>

登入後複製

在 http://my.bbs.com/ 網域下新建 comm_client.html, 位址 為http://my.bbs.com/comm_main.html,檔案內容如下

nbsp;html>

    
    <meta>
    <title>跨站通信 当前域 http://my.bbs.com</title>
<script>
var originWhiteList = ["http://www.yuetong.com"];
function checkWhiteList(origin){
    for(var i=0; i< originWhiteList.length; i++){
        if(origin == originWhiteList[i]){
            return true;
        }
    }
    return false;
}
function messageHandler(e){
    if(checkWhiteList(e.origin)){
        processMessage(e.data);
    }else{
        // ignore message
    }
}
function processMessage(d){
    var ta = document.getElementsByTagName("textarea")[0].value;
    ta += d + "HTML5跨域資訊互動技術之postMessage程式碼實例詳解n";
    document.getElementsByTagName("textarea")[0].value = ta;
}
function sendMsg(){
    var msg = document.getElementById("message").value;
    window.top.postMessage(msg,"http://www.yuetong.com");
}
window.addEventListener("message",messageHandler,true);
</script>


<h1 id="您好-我这里是-http-my-bbs-com">您好,我这里是 http://my.bbs.com/</h1>
<input>
<input>
<textarea></textarea>

登入後複製

配圖1,再輸入框中輸入"你好,朋友" 可以看到iframe視窗中 收到訊息。

HTML5跨域資訊互動技術之postMessage程式碼實例詳解

配圖1

我們在iframe 視窗中輸入「我很好" ,主視窗收到訊息並彈出 提示框

HTML5跨域資訊互動技術之postMessage程式碼實例詳解

   其中最為重要 為增加  message 訊息的監聽和處理, 以及信任站點的配置。


以上是HTML5跨域資訊互動技術之postMessage程式碼實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

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:43 PM

HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

See all articles