跨域是指乙個域下的文件或指令碼試圖去請求另乙個域下的資源,這裡跨域是廣義的。其實我們通常所說的跨域是狹義的,是由瀏覽器同源策略限制的一類請求場景。
什麼是同源策略?
同源策略/sop(same origin policy)是一種約定,由netscape公司2023年引入瀏覽器,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,瀏覽器很容易受到xss、csfr等攻擊。所謂同源是指」協議+網域名稱+埠」三者相同,即便兩個不同的網域名稱指向同乙個ip位址,也非同源。
常見跨域場景
url說明是否允許通訊
與 與
同一網域名稱,不同檔案或路徑
允許 與
同一網域名稱,不同埠
不允許 與
同一網域名稱,不同協議
不允許 與
網域名稱和網域名稱對應相同ip
不允許 與 與
主域相同,子域不同
不允許 與
不同網域名稱
不允許通過jsonp跨域
//原生實現//jquery實現
$.ajax(
});//vue實現
}).then((res) => )
document.domain + iframe跨域
location.hash + iframe跨域
實現原理: a欲與b跨域相互通訊,通過中間頁c來實現。 三個頁面,不同域之間利用iframe的location.hash傳值,相同域之間直接js訪問來通訊。
具體實現:a域:a.html -> b域:b.html -> a域:c.html,a與b不同域只能通過hash值單向通訊,b與c也不同域也只能單向通訊,但c與a同域,所以c可通過parent.parent訪問a頁面所有物件。
window.name + iframe跨域
window.name屬性的獨特之處:name值在不同的頁面(甚至不同網域名稱)載入後依舊存在,並且可以支援非常長的 name 值(2mb)。
postmessage跨域
跨域資源共享(cors)
nginx**跨域
nodejs中介軟體**跨域
websocket協議跨域
前端常見跨域解決方案
前端常見跨域解決方案 全 跨域問題 平時被問到最多的問題還是關於跨域的,其實跨域問題真的不是乙個很難解決的問題。這裡我來簡單總結一下我推薦的幾種跨域解決方案。我最推薦的也是我工作中在使用的方式就是 cors 全稱為 cross origin resource sharing 跨域資源共享 這種方案對...
vue前端跨域解決方案
為什麼會出現跨域 瀏覽器訪問非同源的 時,會被限制訪問,出現跨域問題.常見的跨域有三種 cors跨域 後端開啟 全稱 跨域資源共享 原理 它允許瀏覽器向跨源伺服器,發出xmlhttprequest請求,從而克服了ajax只能同源使用的限制 vue 伺服器proxy跨域 通過請求本地的伺服器,然後本地...
前端跨域請求及解決方案
跨域請求是當前發起請求的域 協議 網域名稱 埠 與該請求指向的資源所在的域不一致,常見的解決方式有 jsonp 跨域資源共享cors 反向 等 1 jsonp 2 跨域資源共享cors cross origin resource sharing 3 反向 最常用 在前端開發編碼過程中,常見的html...