什麼是跨域及常用的幾種跨域解決方案

2021-10-04 14:44:00 字數 787 閱讀 4786

什麼是跨域?

瀏覽器從乙個網域名稱的網頁去請求另乙個網域名稱的資源時,網域名稱、埠、協議任一不同,都是跨域。

跨域並不是請求發不出去,請求能發出去,服務端能收到請求並正常返回結果,只是結果被瀏覽器攔截了。

這是由於瀏覽器的同源策略而導致的,同源策略限制了不同源之間的資源進行互動,用於隔離潛在的惡意檔案的安全機制,並且是瀏覽器最基本的安全機制。

廣義的跨域:

2)資源嵌入:link  script  img  frame等dom標籤,還有樣式中background:url()、@font-face()等檔案外鏈

3)指令碼請求:js發起的ajax請求、dom和js物件的跨域操作等

同源是指「協議+網域名稱+埠」三者相同,即便兩個不同的網域名稱指向同乙個ip位址,也非同源。

同源策略限制以下幾種行為:

1)cookie、localstorage 和 indexdb 無法讀取 

2)dom 和 js物件無法獲取 

3)ajax請求不能傳送

跨域解決方案

1. 通過jsonp跨域

2. document.domain  +  iframe跨域

3. location.hash  +  iframe

4. window.name  +  iframe跨域

5. postmessage跨域

6. 跨域資源共享(cors)

7. nginx**跨域

8. node.js中介軟體**跨域

9. websocket協議 跨域

參考文章:

什麼是跨域?解決跨域的方法

由於瀏覽器出於安全考慮的同源策略限制需要跨域,所謂的同源就是兩個域需要相同的 協議 protocol 網域名稱 host 埠 port 必須相同 三者之前任何乙個不同都構成跨域的情況,比如說前後端分離之後,前後都在兩個域之下,前端的瀏覽器請求後端伺服器的資料的時候就需要做跨域處理 1 無法讀取非同源...

跨域問題 什麼是跨域及解決方案

跨域是指跨網域名稱的訪問,以下情況都屬於跨域 跨域原因說明 示例網域名稱不同 www.jd.com與www.taobao.com 網域名稱相同,埠不同 www.jd.com 8080與www.jd.com 8081 二級網域名稱不同 item.jd.com與miaosha.jd.com 如果網域名稱...

什麼是跨域及如何實現跨域

實現cors 在nginx中配置cors 一旦這三項資料中 協議 主機位址以及埠 有一項不同,那麼該資源就將被認為是從不同的origin得來的,進而不被允許訪問 cors實際上包含了三種請求 referer 因此preflighted request會先發出options請求,向服務端詢問訪問資源的...