跨文件訊息通訊可以確保iframe、標籤頁、視窗間安全地進行跨來源通訊。它把postMessage API定義為傳送訊息的標準方式。利用postMessage傳送訊息非常簡單,程式碼如下所示:
chatFrame.contextWindow.postMessage('Hello,world','http://www.example.com');
接收訊息時僅需在頁面種增加一個事件處理函數。當某個訊息到達時,透過檢查訊息的來源來決定是否對此訊息進行處理。
訊息事件是一個擁有data(資料)和origin(來源)屬性的DOM事件。 data屬性是發送方傳遞的實際訊息,而origin屬性是發送來源。
postMessage API不僅可以勝任同源文件間的通信,而且在瀏覽器不允許非同源通信的情況下,postMessage API也很有用。鑑於它的一致性和易用性,在同源文檔間通訊時也建議使用postMessage。在JavaScript環境的通訊中始終應使用postMessage API,例如使用HTML5 Web Worker通訊時。
1.1 理解源安全
HTML5榮光引入源(origin)的概念對域安全進行了闡明和改進。來源是在網路上用來建立信任關係的位址的子集。來源由規則(scheme)、主機(host)、連接埠(post)組成。
源的概念中不考慮路徑。
HTML5定義了源的序列化。來源在API和協定中以字串的形式出現。
postMessage的安全規則確保了訊息不會被傳遞到非預期的來源頁面。當發送訊息時,由發送方制定接收方的來源。如果發送者用來呼叫postMessage的視窗不具有特定的來源(例如使用者跳到了其他網站),瀏覽器就不會傳送訊息。
類似地,接受訊息的時候,發送方的來源也被當作訊息的一部分。為避免偽造,訊息來源由瀏覽器提供。接收方可以決定處理哪些訊息,以及忽略哪些訊息。我們可以保留一份白名單,告訴瀏覽器僅僅處理可信來源的訊息。
最好永遠不要對來自第三方的字串求值。再者,要避免使用eval方法處理應用內部字串。可以透過window.JSON或json,.org解析器使用JSON。
1.2 跨文件訊息通訊的瀏覽器支援情況
常用的做法是偵測XMLHttpRequest物件中是否存在withCredentials屬性:
-
var xhr = new
> (typeof xhr.withCredentials === undefined) { 1.3 使用postMessage API
傳送訊息 透過呼叫目標頁window物件中的postMessage()函數可傳送訊息,程式碼如下:
JavaScript Code
複製內容到剪貼簿
- "Hello, world"
- , > 第一個參數包括要傳送的數據,第二個參數是訊息傳送的目的地。要傳送訊息給iframe,可以再對應iframe的contentWindow中呼叫postMessage,程式碼如下: JavaScript Code
- )[0].contentWindow.postMessage("Hello, >, "cha");
監聽訊息事件
接收訊息時僅需在頁面中增加一個事件處理函數。當某個訊息到達時,透過檢查訊息的來源來決定是否對此訊息進行處理。
JavaScript Code複製內容到剪貼簿- window.postMessage("Hello, world", > 訊息事件是一個擁有data(資料)和origin(來源)屬性的DOM事件。 data屬性是發送方傳遞的實際訊息,而origin屬性是發送來源。
來源在API和協定中以字串的形式出現。
JavaScript Code複製內容到剪貼簿- var
-
originWhiteList = ["porta", , ""]; function checkWhiteList(origin) { checkWhiteList(origin) { var i=0; i
if if ; } function messageHandler(e) { if if (>if (chn)2.數據); } else { //忽略未知來源的訊息 } }
作為XMLHttpRequest的改進版,XMLHttpRequest Level2在功能上有了很大的改進。主要集中在兩個方面:
(1)跨源XMLHttpRequests;(2)進度事件(Progress events)
2.1 跨源XMLHttpRequst
Origin Resource Sharing,跨來源資源共享)實作了跨來源XMLHttpRequests。
跨來源HTTP請求包含一個Origin頭部,拓為伺服器提供HTTP請求的來源資訊。頭部由瀏覽器保護,不能被應用程式程式碼修改。從本質上講,它與跨文件訊息通訊中訊息事件的origin屬性作用相同。 CORS規範要求,對一些敏感行為-如申請證書的請求或除了GET和POST以外的OPTIONS預檢(preflight)請求,必須由瀏覽器發送給伺服器,以確定這種行為能否被支持和允許,這意味著成功通訊的背後或許需要由具備CORS出了能力的伺服器來支援。
2.2 進度事件
新版XMLHttpRequest中最重要的API改進之一是增加了對進度的回應。
XMLHttpRequest Level2用了一個有意義的名字Progress進度來命名進度事件。
3 進階功能
3.1 結構化的資料
早期版本的postMessage僅支援字串。後來的版本支援JavaScript物件、canvas imageData和檔案等其他資料類型。由於不同瀏覽器對規範支援的差異,對不同的物件類型的支援情況也不同。
3.2 Framebusting
Framebusting技術可以用來保證某些內容不會載入到jframe。應用程式首先偵測其所在的視窗是否為最外層的視窗(window.top),若不是則跳脫包含它的框架,程式碼如下所示:
JavaScript Code複製內容到剪貼簿3.3二進位資料- if(window!=window.top)
- {
- window.top.location=location;
- }
支援新的二進位API(如Typed Array)的瀏覽器可以用XMLHttpRequest來傳送二進位資料。 Level 2規格支援呼叫send()方法傳送Blob和ArrayBuffer物件
XML/HTML Code複製內容到剪貼簿- var a = new Uint8Array([83,78Array([83,755,55, 0,9]); var xhr = new XMLHttpRequest(); x ", true); console.log(a); xhr.send(a.buffer);

HTML5的核心特性包括語義化標籤、多媒體支持、表單增強和離線存儲與本地存儲。 1.語義化標籤如、等提高了代碼可讀性和SEO效果。 2.多媒體支持通過和標籤簡化了嵌入媒體內容的過程。 3.表單增強引入了新的輸入類型和驗證屬性,簡化了表單開發。 4.離線存儲和本地存儲通過ApplicationCache和localStorage等提高了網頁性能和用戶體驗。

html5isamajorrevisionofthehtmlStandardThatRevolutionsWebDevelopmentBybyIntroDucingNewSemanticeLementSemelementsandAndCapabilities.1)itenhancesCodereAdabilityAndSeowitability andSeowithelientsLike,and.2)

H5的高級技巧包括:1.利用進行複雜圖形繪製,2.使用WebWorkers提升性能,3.通過WebStorage增強用戶體驗,4.實現響應式設計,5.利用WebRTC實現實時通信,6.進行性能優化和最佳實踐。這些技巧幫助開發者構建更動態、互動和高效的Web應用。

H5(HTML5)將通過新元素和API提升網頁內容和設計。 1)H5增強了語義化標記和多媒體支持。 2)它引入了Canvas和SVG,豐富了網頁設計。 3)H5的工作原理是通過新標籤和API擴展HTML功能。 4)基本用法包括使用創建圖形,高級用法涉及WebStorageAPI。 5)開發者需注意瀏覽器兼容性和性能優化。

H5帶來了多項新功能和能力,極大提升了網頁的互動性和開發效率。 1.語義化標籤如、增強了SEO。 2.多媒體支持通過和標籤簡化了音視頻播放。 3.Canvas繪圖提供了動態圖形繪製工具。 4.本地存儲通過localStorage和sessionStorage簡化了數據存儲。 5.地理位置API便於開發基於位置的服務。

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。

HTML5的核心特性包括語義化標籤、多媒體支持、離線存儲與本地存儲、表單增強。 1.語義化標籤如、等,提升代碼可讀性和SEO效果。 2.和標籤簡化多媒體嵌入。 3.離線存儲和本地存儲如ApplicationCache和LocalStorage,支持無網絡運行和數據存儲。 4.表單增強引入新輸入類型和驗證屬性,簡化處理和驗證。

H5提供了多種新特性和功能,極大地增強了前端開發的能力。 1.多媒體支持:通過和元素嵌入媒體,無需插件。 2.畫布(Canvas):使用元素動態渲染2D圖形和動畫。 3.本地存儲:通過localStorage和sessionStorage實現數據持久化存儲,提升用戶體驗。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
視覺化網頁開發工具

Dreamweaver Mac版
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器