跨域和跨視窗通訊

2021-08-01 02:27:29 字數 642 閱讀 4111

同源政策:協議相同,埠號相同,網域名稱相同

不同源限制:

1.cookie,localstroge,indexdb不能訪問

2.dom(iframe不同視窗不能訪問到dom)

3.ajax不能請求

規避方法:

1.跨域視窗通訊: 片段識別符(通過改變子視窗的hash值,把資訊放到hash值上,然後子視窗會監聽到onhashchange事件可以通訊,子視窗也可以通過parent.location.href = ...傳給父視窗資訊);window.possmessage(h5新介面,允許跨視窗跨域,通過監聽message事件);還有一種window.name(iframe請求新頁面時,window.name不會變,但是有同源限制,所以當載入完成是需要把網域名稱變成原來的網域名稱,這地方有點疑惑)

2.ajax跨域:jsonp, websocket,cors

3.跨域處理

跨視窗通訊:

1.window.open時傳遞資訊過去,子視窗通過window.opener獲取父視窗的window物件,父視窗通過contentwindow物件,

2.postmessage

3.localstroge,其他視窗可以監聽到storage事件

4.片段識別符

5.window.name

跨域視窗通訊,可實現跨域單點登入

目前比較主流的專案都是前後端分離的專案,此時會使用token來驗證使用者資訊。這時要想實現單點登入無非就是不同的 能擁有已經登入過 的token和一些使用者資訊,就可以實現不用再登入就能訪問頁面的功能。還是以a b和c 來舉例吧。c 作為 訊息的 需要實現監聽訊息,並且將訪問localstorage...

iframe 通訊和跨域通訊

幾年前頁面裡使用iframe巢狀使用的還是很多的。以下是多種使用方法 1 同域下巢狀 父頁面 window.nl ad function function fu 子頁面 父頁面呼叫子頁面 iframename.window.document.xx iframename.window.function...

解決跨域視窗的通訊問題

js前端解決方案 1 片段識別符 fragment identifier 2 跨文件通訊api cross document messaging window.postmessage 片段識別符號 片段識別符號指的是url 號後面的部分 比如的flag 改變片段識別符號,頁面不會重新整理 父視窗改變...