国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > HTML > 正文

Html5 postMessage實(shí)現(xiàn)跨域消息傳遞

2024-08-26 00:18:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了Html5 postMessage實(shí)現(xiàn)跨域消息傳遞的相關(guān)資料,需要的朋友可以參考下
 
 

一、同源策略

    要理解跨域,我們首先要知道什么是同源策略。百度百科上這樣定義同源策略:同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會(huì)受到影響。可以說(shuō)Web是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。

    何謂同源:如果兩個(gè)URL的域名、協(xié)議、端口相同,則表示他們同源。

    瀏覽器的同源策略,限制了來(lái)自不同源的"document"或腳本,對(duì)當(dāng)前"document"讀取或設(shè)置某些屬性。 (白帽子講web安全[1])。根據(jù)這個(gè)策略,a.com域名下的JavaScript無(wú)法跨域操作b.com域名下的對(duì)象。比如,baidu.com域名下的頁(yè)面中包含的JavaScript代碼,不能訪問(wèn)google.com域名下的頁(yè)面內(nèi)容。

    JavaScript必須嚴(yán)格遵循瀏覽器的同源策略,包括Ajax(事實(shí)上,Ajax也是由JavaScript組成)。通過(guò)XMLHttpRequest對(duì)象實(shí)現(xiàn)的Ajax請(qǐng)求,不能向不同的域提交,比如,在abc.test.com下的頁(yè)面,不能向def.test.com提交Ajax請(qǐng)求。運(yùn)用了同源策略之后,用戶就能確保自己正在查看的頁(yè)面確實(shí)來(lái)自于正在瀏覽的域。

    同源策略在現(xiàn)實(shí)應(yīng)用中是十分重要的。假設(shè)攻擊者利用Iframe把真正的銀行登錄頁(yè)面嵌到他的頁(yè)面上,當(dāng)用戶使用真實(shí)的用戶名、密碼登錄時(shí),該頁(yè)面就可以通過(guò)JavaScript讀取到用戶表單中的內(nèi)容,這樣用戶名和密碼信息就被泄漏了。

    在瀏覽器中,<script>、<link>、<img>、<iframe>等標(biāo)簽都可以加載跨域資源,不受同源策略限制,但是通過(guò)src加載的資源,瀏覽器限制了javascript的權(quán)限,不能進(jìn)行各種的讀寫(xiě)。從而,即使請(qǐng)求發(fā)了,敏感數(shù)據(jù)回來(lái)了,也是取不到的。

二、postMessage實(shí)現(xiàn)跨域

   語(yǔ)法:window.postMessage(msg,targetOrigin)

    window: 指目標(biāo)窗口,可能是window.frames屬性的成員或者由window.open方法創(chuàng)建的窗口

    message:要發(fā)送的消息,html5規(guī)范中提到該參數(shù)可以是JavaScript的任意基本類型或可復(fù)制的對(duì)象,然而并不是所有瀏覽器都做到了這點(diǎn)兒,部分瀏覽器只能處理字符串參數(shù),所以我們?cè)趥鬟f參數(shù)的時(shí)候需要使用JSON.stringify()方法對(duì)對(duì)象參數(shù)序列化,在低版本IE中引用json2.js可以實(shí)現(xiàn)類似效果

    targetOrigin:“目標(biāo)域“,包括:協(xié)議、主機(jī)名、端口號(hào)。若指定為”*“,則表示可以傳遞給任意窗口,指定為”/“,則表示和當(dāng)前窗口的同源窗口。

    獲取postMessage傳來(lái)的消息:為頁(yè)面添加onmessage事件

XML/HTML Code復(fù)制內(nèi)容到剪貼板
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 综艺| 沁水县| 静安区| 泸水县| 江西省| 大余县| 兴化市| 大厂| 比如县| 三门县| 湖北省| 南昌市| 玉门市| 高雄县| 盘锦市| 蓝田县| 越西县| 永丰县| 景泰县| 故城县| 天柱县| 上饶市| 延川县| 周宁县| 宣武区| 菏泽市| 靖边县| 昌平区| 宁武县| 修武县| 丘北县| 垣曲县| 肇东市| 宿州市| 奉新县| 罗源县| 灌云县| 南宫市| 双流县| 榆树市| 高雄市|