摘要:同源政策協(xié)議域名端口均相同。解決方式一原理通過動態(tài)添加一個元素,向服務(wù)器請求數(shù)據(jù)。服務(wù)器接收請求返回到指定具名回調(diào)函數(shù)。注意查詢的中需要指定回調(diào)函數(shù)的名字。缺陷是方式獲取,不支持。五是跨域資源分享。
同源政策:協(xié)議、域名、端口均相同。
非同源限制:
cookie、localStorage、indexDB無法讀取。
DOM無法獲取。
AJAX請求無法發(fā)送。
解決方式:
一、JSONP原理:通過動態(tài)添加一個
頁面二:"https://www.example.com/page2.html" //接收頁面
事件接收window.addEventListener("message", function(){});中的message事件對象event有三個屬性:
1、event.source:發(fā)送消息的窗口
2、event.origin: 消息發(fā)向的網(wǎng)址
3、event.data: 消息內(nèi)容
iframe載入頁面和src里面的目標(biāo)域是同一個域,是能夠發(fā)起ajax請求(父子窗口)。 //前提是同源,不同源就不可以發(fā)起ajax請求。
不同窗口同源之間是可以獲取window對象,但是不能獲取window對象的屬性和方法。 //不同源會報錯
1、document.domain + iframe(同源可用 -- 跨子域)document.domain屬性:一級域名相同,二級域名不同可以實現(xiàn)window對象獲取。
頁面一:"https://segmentfault.com/page1.html"
頁面二:"https://segmentfault.com/page2.html"
缺陷:主域名得一致。
2、window.name + iframe(非同源可用)window.name屬性:在一個窗口的生命周期內(nèi),無論是否同源,同一個窗口的載入頁面window.name屬性是共享的,每個頁面都可以操作。
頁面一:"https://segmentfault.com/page1.html"
頁面二:"https://segmentfault.com/page2.html"
缺陷:兼容性不好
3、location.hash + iframe(非同源可用)片段標(biāo)識符:片段標(biāo)識符是指url#號后面的部分。只是改變片段標(biāo)識符頁面不刷新。
頁面一:"https://www.segmentfault.com/page1.html"
頁面二:"https://www.example.com/page2.html#messgae"
頁面三:"ttps:/www.segmentfault.com/page3html#somedata"
缺點:數(shù)據(jù)暴露在url,長度也有限制。
四、WebSocketWebSocket:瀏覽器通過 JavaScript 向服務(wù)器發(fā)出建立 WebSocket 連接的請求,連接建立以后,客戶端和服務(wù)器端就可以通過 TCP 連接直接交換數(shù)據(jù)。
設(shè)置WebSocket請求頭信息,服務(wù)器支持就可以進行。
Origin: http://example.com //根據(jù)域名是否在白名單內(nèi)來判斷是否可以通信
缺點:實現(xiàn)成本高。
五、CORScors是跨域資源分享?,F(xiàn)CORS通信的關(guān)鍵是服務(wù)器。只要服務(wù)器實現(xiàn)了CORS接口,就可以跨源通信。
缺點:服務(wù)器配置,占用主域帶寬。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/102985.html
摘要:跨域完全講解今天在慕課網(wǎng)上學(xué)習(xí)了跨域完全講解我在收集面試題的時候其實就已經(jīng)有過跨域的問題的了,當(dāng)時候知道了為什么會存在跨域,以及跨域解決的方案有哪些,今天隨著課程的學(xué)習(xí),又加深了跨域的理解,以此記錄下來。 AJAX跨域完全講解 今天在慕課網(wǎng)上學(xué)習(xí)了AJAX跨域完全講解:https://www.imooc.com/learn/947 我在收集AJAX面試題的時候其實就已經(jīng)有過AJAX跨域...
摘要:跨域完全講解今天在慕課網(wǎng)上學(xué)習(xí)了跨域完全講解我在收集面試題的時候其實就已經(jīng)有過跨域的問題的了,當(dāng)時候知道了為什么會存在跨域,以及跨域解決的方案有哪些,今天隨著課程的學(xué)習(xí),又加深了跨域的理解,以此記錄下來。 AJAX跨域完全講解 今天在慕課網(wǎng)上學(xué)習(xí)了AJAX跨域完全講解:https://www.imooc.com/learn/947 我在收集AJAX面試題的時候其實就已經(jīng)有過AJAX跨域...
摘要:跨域問題經(jīng)常需要面對,前端需要做的比較直接要么選擇異步提交,或者,要么表單提交基本可以搞定大部分跨域問題,但問題也比較明顯,只能通過方式提交并且是通過把參數(shù)拼到上提交請求的但是所有瀏覽器有長度限制,不同瀏覽器長度限制不一樣當(dāng)出現(xiàn)要提交大段落 跨域問題經(jīng)常需要面對,前端需要做的比較直接要么選擇ajax異步提交,XML或者jsonp,要么表單提交 jsonp基本可以搞定大部分跨域問題,但問...
閱讀 2398·2021-09-22 16:01
閱讀 3164·2021-09-22 15:41
閱讀 1182·2021-08-30 09:48
閱讀 497·2019-08-30 15:52
閱讀 3335·2019-08-30 13:57
閱讀 1720·2019-08-30 13:55
閱讀 3671·2019-08-30 11:25
閱讀 767·2019-08-29 17:25