真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用postMessage怎么實(shí)現(xiàn)iframe跨域-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)使用postMessage怎么實(shí)現(xiàn)iframe跨域,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個(gè)合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,成都創(chuàng)新互聯(lián)面向各種領(lǐng)域:陽臺護(hù)欄成都網(wǎng)站設(shè)計(jì)、成都營銷網(wǎng)站建設(shè)解決方案、網(wǎng)站設(shè)計(jì)等建站排名服務(wù)。

postMessage是什么


此處引用MDN關(guān)于postMessage的詳細(xì)說明。簡而言之就是:postMessage是掛載在window下的一個(gè)方法,用于不同域名下的兩個(gè)頁面的信息交互,父子頁面通過postMessage()發(fā)送消息,再通過監(jiān)聽message事件接收信息。

postMessage使用

假設(shè)有一個(gè)父頁面indexPage.html, 子頁面iframePage.html

一、父頁面向子頁面發(fā)送消息

// 父頁面index.html

//獲取iframe元素

iFrame = document.getElementById('iframe')

//iframe加載完畢后再發(fā)送消息,否則子頁面接收不到message

iFrame.onload = function(){

//iframe加載完立即發(fā)送一條消息

iFrame.contentWindow.postMessage({msg: 'MessageFromIndexPage'},'\*');

}

iFrame.contentWindow.postMessage('MessageFromIndexPage','b.com')

方法的第一個(gè)參數(shù)是發(fā)送的消息,無格式要求;第二個(gè)參數(shù)是域名限制,當(dāng)不限制域名時(shí)填寫* ,第三個(gè)可選參數(shù)transfer一般不填,這個(gè)參數(shù)有嚴(yán)重的瀏覽器兼容問題。

二、子頁面接收父頁面發(fā)送的消息

// 子頁面iframePage.html

//監(jiān)聽message事件

window.addEventListener("message", function(event){

console.log( '這里是接收到來自父頁面的消息,消息內(nèi)容在event.data屬性中', event )

}, false)

三、子頁面給父頁面?zhèn)鬟f消息

window.parent.postMessage({name: '張三'}, '\*');

方法的第一個(gè)參數(shù)是發(fā)送的消息,目前可無格式要求, 在 Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)之前, 參數(shù) message 必須是一個(gè)字符串;第二個(gè)參數(shù)是域名限制,當(dāng)不限制域名時(shí)填寫’*‘

四、父頁面接收子頁面的消息

//監(jiān)聽message事件

window.addEventListener("message", function receiveMessageFromIframePage (event) {

console.log('這里是子頁面發(fā)送來的消息,消息內(nèi)容在event.data屬性中', event)

}, false);

postMessage的安全問題


使用postMessage交互,默認(rèn)就是允許跨域行為,一旦允許跨域,就會有一些安全問題,針對postMessage主要有兩種攻擊方式。一是偽造數(shù)據(jù)發(fā)送方(父頁面),易造成數(shù)據(jù)接收方(子頁面)受到XSS攻擊或其他安全問題;二是偽造數(shù)據(jù)接收方,類似jsonp劫持。

一、偽造數(shù)據(jù)發(fā)送方

攻擊方式:偽造一個(gè)父頁面,引導(dǎo)使用者觸發(fā)功能,發(fā)送消息給子頁面,如果子頁面將父頁面發(fā)送的消息直接插入當(dāng)前文檔流,就是引發(fā)XSS攻擊,或者子頁面使用父頁面?zhèn)鬟f的消息進(jìn)行其他操作,例如寫入數(shù)據(jù),造成安全問題。

防范方式:子頁面iframe對接收到的message信息做域名限制

// 子頁面iframePage.html

//監(jiān)聽message事件

window.addEventListener("message", function(event){

origin = event.origin || event.originalEvent.origin

if(origin == 'https://A.com'){

console.log( '這里是接收到來自父頁面的消息,消息內(nèi)容在event.data屬性中', event )

}

}, false)

二、偽造數(shù)據(jù)接收方

攻擊方式:偽造一個(gè)子頁面,在父頁面中引入子頁面,在偽造的頁面中接收父頁面發(fā)送的消息,此時(shí)可以獲取用戶的敏感消息。

防范方式:父頁面對發(fā)送消息的頁面做域名限制

// 父頁面index.html

//獲取iframe元素

iFrame = document.getElementById('iframe')

//iframe加載完畢后再發(fā)送消息,否則子頁面接收不到message

iFrame.onload = function(){

//iframe加載完立即發(fā)送一條消息

iFrame.contentWindow.postMessage('MessageFromIndexPage','https://B.com');

}

看完上述內(nèi)容,你們對使用postMessage怎么實(shí)現(xiàn)iframe跨域有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


本文題目:使用postMessage怎么實(shí)現(xiàn)iframe跨域-創(chuàng)新互聯(lián)
新聞來源:http://weahome.cn/article/dgjcds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部