前端跨域處理

假設 A: home.xxx.com --------跨域調用------->   api.xxx.comapi

 

home.xxx.com 調用:跨域

otherWindow.postMessage( message,  targetOrigin );post

 

otherWindow:另外一個的window對象的引用,這個引用多是對象獲取,如使用iframe元素的 contentWindow 屬性,window.open返回的對象,或者根據名稱或數字索引在window.frames中獲得。網站

 

message:發送到另外一個窗口的數據。spa

targetOrigin:特別說明必須指定otherWindows要發送事件的來源,能夠爲文本字符串」*」 (顯示任意來源) 或者是一個URI。若是在事件被指定發送後, otherWindow文檔的協議,主機名稱,或端口號與targetOrigin提供的不相符的話,這個事件將不後被髮送。只有當全部三個所有匹配後事件纔會被髮送。 這種機制提供消息發送到哪的控制權,例如,若是postMessage的被用來發送一個密碼,這將是絕對關鍵的,參數是一個來源和打算接收包含密碼消息的接收者同樣的URI,以防止由惡意的第三方截取的密碼。始終提供指定的targetOrigin,而不是*,若是你知道其它window文檔的地址,而沒有提供一個具體的目標,將會泄露了您發送給任何有興趣的惡意網站的數據。code

 

api.xxx.com:對象

window.addEventListener("message",function (e) {
   
   if (e.origin == "https://home.xxx.com") {
            alert(e.data);
     }
 }
false);

data從其餘窗口過來的數據對象。索引

origin在postMessage 被調用時發送消息窗口的來源。事件

source:發送消息窗口的引用。文檔

相關文章
相關標籤/搜索