Blocked a frame with origin XXX from accessing a cross-origin 。iframe跨域問題

前端開發(fā)中,常會遇到iframe引入頁面的情況,如果在同域下,子頁面訪問父頁面中的window對象的方法,直接使用window.parent就行了,特別簡單,但是如果跨域的情況下就會受到限制。
跨域錯誤信息


image.png

經(jīng)過網(wǎng)上查找總結三種方法解決
一、放到同一個域名下(如果客觀條件允許的話)
二、代理頁面方法


image.png

建立iframe代理頁面
第一步:我在父頁面的同域下新建了一個代理頁面:iframe.html,在這個代理頁面中注冊一個“window.onload”監(jiān)聽事件,當代理頁面被加載的時候,執(zhí)行window.top對象上的“excute”方法。
image.png

在父頁面中定義將要被執(zhí)行的excute方法
第二步:在父頁面中定義將要被執(zhí)行的excute方法,該方法打印出當前頁面中的sessionStorage(之前子頁面想要做的事)

image.png

在子頁面中定義一個方法
第三步:在子頁面中定義一個方法,當觸發(fā)該方法時會在子頁面中create一個看不到的iframe,并將代理頁面的地址,賦給這個iframe。

經(jīng)過這三個步驟,代理頁面的方式訪問父頁面window對象的方法已經(jīng)完成了:

image.png

執(zhí)行結果
此時,點擊子頁面中的“跨域”按鈕,就會把父頁面中的sessionStorage打印出來。

整理一下,其實思路如圖所示:

image.png

代理頁面解決跨域問題思路示意圖
當在子頁“http://localhost:8123/index2”中觸發(fā)事件時,創(chuàng)建一個iframe,iframe引入代理頁“http://localhost:8124/iframe.html”,代理頁在加載時通過“window.top.excute”執(zhí)行父頁“http://localhost:8124/index1.html”中的excute方法。這樣就實現(xiàn)了在子頁面中與父頁面跨域進行交互!

引自:http://www.itdecent.cn/writer#/notebooks/19577515/notes/93127124/preview

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容