由于 Javascript 同源策略的存在使得一個源中加載來自其它源中資源的行為受到了限制。即會出現(xiàn)跨域請求禁止。
通俗一點說就是如果存在協(xié)議、域名、端口或者子域名不同服務(wù)端,或一者為IP地址,一者為域名地址(在跨域問題上,域僅僅是通過“ url的首部 ”來識別而不會去嘗試判斷相同的IP地址對應(yīng)著兩個域或者兩個域是否同屬同一個IP),之中任意服務(wù)端旗下的客戶端發(fā)起請求其它服務(wù)端資源的訪問行動都是跨域的,而瀏覽器為了安全問題一般都限制了跨域訪問,也就是不允許跨域請求資源。
但很多時候我們卻又不得不去跨域請求資源,這個時候就需要我們想方法去繞過瀏覽器同源策略的限制了。
常見的跨域請求解決方法:
1.Jsonp 利用script標(biāo)簽發(fā)起get請求不會出現(xiàn)跨域禁止的特點實現(xiàn)
2.window.name+iframe 借助中介屬性window.name實現(xiàn)
3.html5的 postMessage 主要側(cè)重于前端通訊,不同域下頁面之間的數(shù)據(jù)傳遞
4.Cors需要服務(wù)器設(shè)置header:Access-Control-Allow-Origin
5.Nginx反向代理 可以不需要目標(biāo)服務(wù)器配合,不過需要Nginx中轉(zhuǎn)服務(wù)器,用于轉(zhuǎn)發(fā)請求(服務(wù)端之間的資源請求不會有跨域限制)