跨域CORS JSONP 伺服器中轉

2021-10-19 10:17:07 字數 2381 閱讀 5029

當兩個伺服器的 源 不完全相同的時候,無法獲取另乙個的資料。不同的頁面,無法相互訪問資料。

window.origin

或location.origin

源 = 協議 + 網域名稱 + 埠號

當協議、網域名稱、埠號(完全一致)才是同源,否者都為不同源

與 不同源

與 不同源

為了解決同源策略無法相互訪問資料

其中兩種跨域的方法:cors、jsonp

在後端設定響應頭,提前宣告允許誰獲取資料。

response.

setheader

("access-control-allow-origin"

,"允許的源位址,例如()"

)

優點:操作簡單

缺點:不相容ie 6 7 8 9

將資料寫入到js檔案中,利用引用js檔案,將資料儲存到window上。最後再利用window來獲取js儲存的資料。

優點:相容ie、可以跨域

缺點:因為是通過js的script獲取的,所以他不支援post,只可以發get請求。以及沒有ajax那樣獲取精確的狀態碼等資料。

使用自己的伺服器作為中轉站,將需要請求的位址,傳送給服務端。服務端不存在跨域問題,可以直接請求資料。返回給我們自己。

中轉伺服器

)瀏覽器正常請求即可

('訪問資料的檔案位址').

then

((data)

=>

)服務端

)客戶端

function

jsonp

(url, data =)=

$`).

join

('&'

) script.src = url +

'?callback=__jsonp__&'

+ query

script.

onerror=(

)=>

reject

('載入失敗'

) document.head.

(script)

document.head.

removechild

(script)})

}jsonp

('',)

.then

(data =>).

catch

(e => console.

log(e)

)

apache伺服器跨域設定

在需要允許跨域訪問的伺服器的配置檔案 httpd.conf新增如下內容 loadmodule headers module modules mod headers.so allowoverride none require all granted header set access control ...

伺服器跨域請求設定

通過ajax方式訪問跨域的資源時。瀏覽器報錯 已阻止跨源請求 同源策略禁止讀取位於 的遠端資源。原因 cors 頭缺少 access control allow origin 跨域資源共享 cors 機制允許web應用伺服器進行跨域訪問控制,從而使跨域資料傳輸得以安全進行。瀏覽器支援在api容器中 ...

伺服器解決跨域問題

最近遇到跨域的問題,之前一直知道可以使用josnp的方式去做,然後在網上查解決方案,但是發現有些問題。沒辦法,只能繼續找其他的解決方式。網上有說如果是springmvc的話可以加 cors的註解方式,但是用了發現還是沒有解決問題,於是各種查詢資料。最終找到了通過http的請求頭和響應頭來做 具體 如...