什麼是跨域?
瀏覽器從乙個網域名稱的網頁去請求另乙個網域名稱的資源時,網域名稱、埠、協議任一不同,都是跨域。
跨域並不是請求發不出去,請求能發出去,服務端能收到請求並正常返回結果,只是結果被瀏覽器攔截了。
這是由於瀏覽器的同源策略而導致的,同源策略限制了不同源之間的資源進行互動,用於隔離潛在的惡意檔案的安全機制,並且是瀏覽器最基本的安全機制。
廣義的跨域:
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請求,向服務端詢問訪問資源的...