好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > iframe跨域的幾種常用方法

iframe跨域的幾種常用方法

熱門標簽:智能電銷機器人被禁用了么 黃石ai電銷機器人呼叫中心 惡搞電話機器人 高德地圖標注商戶怎么標 如何查看地圖標注 電話機器人技術 欣鼎電銷機器人 效果 地圖標注軟件打印出來 ok電銷機器人

背景

隨著業務的發展,自然地會有一些公共的業務被抽離成為公共組件共各個項目使用。但是由于各個項目用到的技術棧都有所不同,所以這個公共組件就不能方便地被引用了。為解決這個問題,我們把這個組件寫成了單獨的頁面掛到一個域名下,其他項目采用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自由通信啦。

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

標簽:赤峰 盤錦 綏化 聊城 阿壩 金昌 萍鄉 中山

巨人網絡通訊聲明:本文標題《iframe跨域的幾種常用方法》,本文關鍵詞  iframe,跨域,的,幾種,常用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《iframe跨域的幾種常用方法》相關的同類信息!
  • 本頁收集關于iframe跨域的幾種常用方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 打屁股女子调教学院| 国产白丝jk被疯狂输出免费| 饥饥对饥饥| 美女胸罩秘?露出奶头视频| 中文字幕一区二区三区乱码在线| 国产对白受不了了中文对白| 女教师被婬辱の教室| 色综合天天| 日本巜她在丈夫面前被耍| 强开美妇后菊哀嚎哭| 日韩美女三级| 特级毛片全部免费播放免下载 | 91精品一卡2卡3卡4卡国色| 德钦县| 欧美激情欧美激情在线五月 | 久久久久久精品免费免费导航 | 免费国产成人高清在线直播| 欧洲精品美女一品二品三品四品| 扒开腿挺进女警湿润的花苞视频| 日韩专区欧美| 无人区完整版高清在线观看| 天天操电影| 日本日韩欧美| Chinese Gay Fuck XXX HD | chinesegay视频| 国产盗撮XXXX精品XXXX| 人与野鲁?毛片免费| 男娃灌溉系统| 老湿影院一分钟| 日韩一级视频| 久久夜色精品国产噜噜亚洲a| 欲女-经典片-K8经典网| 我解开了英语老师的裙子| lisaann无套在线播放| 成全视频在线观看大全| 范冰冰被躁得嗷嗷叫高潮视频| 我老婆把我改造成了女人| 2018天天爽天天玩天天拍| 国产精品免费久久第1集| 性一交一免一费一视一频| 老板在办公室里揉护士的胸视频|