亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

詳解iframe跨域的幾種常用方法(小結)

2019-11-19 11:40:46
字體:
來源:轉載
供稿:網友

背景

隨著業務的發展,自然地會有一些公共的業務被抽離成為公共組件共各個項目使用。但是由于各個項目用到的技術棧都有所不同,所以這個公共組件就不能方便地被引用了。為解決這個問題,我們把這個組件寫成了單獨的頁面掛到一個域名下,其他項目采用iframe或者webview的方式去加載這個頁面,從而實現功能的簡單復用。

不過這過程中也產生了很多問題,單是跨域就會出現好幾次了。以下我將會介紹我遇到的跨域問題以及一些解決方法。

為什么會跨域

為了保證用戶信息的安全,95年的時候Netscape公司引進了同源策略,里面的同源指的是三個相同:協議、域名、端口。
違反了同源策略就會出現跨域問題,主要表現為以下三方面:

  • 無法讀取cookie、localStorage、indexDB
  • DOM無法獲得
  • ajax請求無法發送

場景

最近在做一個需求,需要用iframe引入一個別人封裝好的類似視頻播放器的東西。iframe里面有一個全屏的按鈕,點擊后需要頁面讓iframe全屏,由于受到同源策略的限制,iframe無法告訴頁面全屏。

解決辦法

設置domain

document.domain作用是獲取/設置當前文檔的原始域部分,同源策略會判斷兩個文檔的原始域是否相同來判斷是否跨域。這意味著只要把這個值設置成一樣就可以解決跨域問題了。

在此我將domain設置為一級域名的值,a頁面url為a.demo.com,a頁面中iframe引用的b頁面url為b.demo.com,具體設置為

document.domain = 'demo.com'

設置完之后,在a頁面的window上掛載使iframe全屏的方法

// a頁面window.toggleFullScreen = () => { // do something}

在b頁面上可以直接獲取到a頁面的window對象并直接調用

// b頁面window.parent.toggleFullScreen()

但是這個值的設置也有一定限制,只能設置為當前文檔的上一級域或者是跟該文檔的URL的domain一致的值。如url為a.demo.com,那domain就只能設置為demo.com或者a.demo.com。因此,設置domain的方法只能用于解決主域相同而子域不同的情況。

使用中間頁面

我們還可以使用一個與a頁面同域名但不同路由的c頁面作為中間頁面,b頁面加載c頁面,c頁面調用a頁面的方法,從而實現b頁面調用a頁面的方法。具體操作如下:

在a頁面的node層新開一個路由,此路由加載一個c頁面作為中間頁面,c頁面的url為a.demo.com/c。c頁面只是一個簡單的html頁面,在window的onload事件上調用了a頁面的方法。

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title></head><body> <script>  window.onload = function () {   parent.parent.toggleFullScreen();  } </script></body></html>

由于c頁面和a頁面是符合同源策略的,所以可以避開跨域問題,執行全屏的方法。

postmessage

window.postMessage方法可以安全地實現跨源通信,寫明目標窗口的協議、主機地址或端口就可以發信息給它。

// b頁面parent.postMessage( value, "http://a.demo.com");
// a頁面window.addEventListener("message", function( event ) { if (event.origin !== 'http://b.demo.com') return; toggleFullScreen() });

為了安全,收到信息后要檢測下event.origin判斷是否要收信息的窗口發過來的。

總結

通過以上的方法,我們就可以和iframe自由通信啦。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区av在线播放| 亚洲视频777| 亚洲精品一区中文字幕乱码| 成人欧美在线视频| 一区二区在线免费视频| 色偷偷91综合久久噜噜| 色综合久久天天综线观看| 国产午夜精品理论片a级探花| 久久久久这里只有精品| 91av在线不卡| 一区二区av在线| 综合136福利视频在线| 日韩av高清不卡| 在线观看欧美www| 成人久久久久久久| 欧美日韩中文字幕日韩欧美| 性欧美长视频免费观看不卡| 国产免费亚洲高清| 欧美xxxwww| 中文字幕综合一区| 日韩欧美在线视频日韩欧美在线视频| 国产欧美日韩中文字幕在线| 法国裸体一区二区| 啪一啪鲁一鲁2019在线视频| 国产在线999| 国产一区二区日韩精品欧美精品| 2020久久国产精品| 美女扒开尿口让男人操亚洲视频网站| 91老司机精品视频| 国产男女猛烈无遮挡91| 日韩精品在线看| 日韩av中文在线| 国产欧美一区二区三区视频| 亚洲福利视频二区| 黑人精品xxx一区一二区| 另类图片亚洲另类| 97久久精品在线| 欧美午夜激情在线| 亚洲视频axxx| 日韩日本欧美亚洲| 亚洲最大激情中文字幕| 性欧美视频videos6一9| 欧美猛交免费看| 欧美人在线观看| 九九热精品视频国产| www.日韩.com| 欧美激情精品久久久久| 欧美大奶子在线| 97香蕉超级碰碰久久免费的优势| 日韩亚洲国产中文字幕| 午夜精品久久17c| 日韩亚洲第一页| 亚洲图片制服诱惑| 综合国产在线视频| 91av网站在线播放| 亚洲精品91美女久久久久久久| 中文字幕日韩有码| 深夜福利91大全| 亚洲bt欧美bt日本bt| 日韩精品免费电影| 亚洲精品国产综合久久| 日本久久91av| 国产精品最新在线观看| 欧美成人精品在线| 高清日韩电视剧大全免费播放在线观看| 亚洲va欧美va国产综合久久| 国产日韩欧美91| 美女久久久久久久久久久| 黄色91在线观看| 日韩极品精品视频免费观看| 国产男女猛烈无遮挡91| 国产精品色婷婷视频| 在线观看日韩av| 日韩在线视频导航| 国产亚洲视频在线观看| 在线观看欧美日韩| 日韩中文第一页| 久久久久久999| 亚洲精品www久久久| 亚洲国产古装精品网站| 欧美在线视频一区二区| 精品香蕉在线观看视频一| 日韩欧中文字幕| 亚洲一区二区久久| 亚洲欧美日韩精品久久奇米色影视| 色偷偷亚洲男人天堂| 日韩电影在线观看永久视频免费网站| 国产精品久久久久久久久久ktv| 亚洲国产精品一区二区三区| 91精品国产乱码久久久久久久久| 国产精品午夜国产小视频| 57pao国产成人免费| 日韩av在线看| 亚洲国产精品va在线观看黑人| 精品国产一区久久久| 中国china体内裑精亚洲片| 91免费福利视频| 亚洲高清色综合| 在线观看久久av| 亚洲精品中文字幕有码专区| 亚洲视频自拍偷拍| 国产精品久久久久久一区二区| 久久99精品久久久久久噜噜| 欧美电影第一页| 在线日韩中文字幕| 欧美在线视频观看免费网站| 亚洲激情视频网站| 国产精品欧美日韩一区二区| 97色伦亚洲国产| 色悠悠久久88| 精品国内亚洲在观看18黄| 中文字幕亚洲情99在线| 日本精品久久中文字幕佐佐木| www.欧美精品| 最近日韩中文字幕中文| 久久精品青青大伊人av| 久久综合免费视频影院| 欧美一区二三区| 欧美中文在线免费| 日韩精品中文字幕在线播放| 欧美亚洲另类视频| 国产精品专区第二| 91精品国产777在线观看| 精品国产91乱高清在线观看| 日本欧美精品在线| 欧美高清无遮挡| 欧美性猛交xxxxx水多| 国产91在线高潮白浆在线观看| 亚洲人成电影网站色www| 欧美另类第一页| 久久免费视频网站| 岛国av在线不卡| 国产成人亚洲精品| 欧美黄色片在线观看| 日韩精品在线观看视频| 亚洲综合大片69999| 6080yy精品一区二区三区| 日韩最新在线视频| 国产精品视频内| 欧美在线观看www| 欧美有码在线观看视频| 精品动漫一区二区三区| 欧美理论电影网| 国产日韩欧美在线看| 97香蕉超级碰碰久久免费软件| 亚洲欧美国产精品专区久久| 久久精品色欧美aⅴ一区二区| 国产成人精品一区二区三区| 欧美视频第一页| 日韩亚洲欧美中文在线| 77777亚洲午夜久久多人| 欧美精品xxx| 97久久精品国产| 久久97精品久久久久久久不卡| 亚洲天堂成人在线视频| 精品少妇v888av| 丝袜情趣国产精品| 91精品久久久久久久久久久久久久| 这里只有精品视频| 国产一区红桃视频| 欧美视频中文在线看| 伦伦影院午夜日韩欧美限制| 日韩激情视频在线播放| 欧美劲爆第一页|