同源政策:協議相同,埠號相同,網域名稱相同
不同源限制:
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 改變片段識別符號,頁面不會重新整理 父視窗改變...