解決跨域(二) CORS

2021-10-02 04:38:00 字數 3411 閱讀 5235

瀏覽器將cors請求分為兩類:簡單請求和非簡單請求

只要同時滿足以下兩大條件,就屬於簡單請求。

5.0...簡單請求不允許跨域

簡單請求允許跨域

8頭資訊欄位中有三個與cors請求相關的字段,都是以access-control-開頭的

;但是,如果省略withcredentials設定,有的瀏覽器還是會一起傳送cookie。這時,可以顯式關閉withcredentials。

xhr.withcredentials =

false

;

注意:如果要傳送cookie,access-control-allow-origin就不能設為星號,必須指定明確的、與請求網頁一致的網域名稱。同時,cookie依然遵循同源政策,只有用伺服器網域名稱設定的cookie才會上傳,其他網域名稱的cookie並不會上傳,且(跨源)原網頁**中的document.cookie也無法讀取伺服器網域名稱下的cookie。解決cookie跨域問題可以通過設定document.domain來實現。

非簡單請求的cors請求,會在正式通訊之前,增加一次http查詢請求,稱為預檢請求瀏覽器會先詢問伺服器,當前網頁所在的網域名稱是否在伺服器的許可名單之中,以及可以使用哪些http動詞和頭資訊字段。只有得到肯定答覆, 瀏覽器才會發出正式的xmlhttprequest請求,否則就報錯。

5.0...非簡單請求不允許跨域

is not allowed by access-control-allow-origin.非簡單請求允許跨域

1728000一旦伺服器通過了"預檢"請求(在有效期內),以後每次瀏覽器正常的cors請求,就都跟簡單請求一樣,會有乙個origin頭資訊字段。伺服器的回應,也都會有乙個access-control-allow-origin頭資訊字段。

下面是**"預檢"請求之後**,瀏覽器的正常cors請求,瀏覽器自動新增origin欄位

5.0...伺服器正常的回應

跨域解決CORS

1.js跨域 js跨域是指通過js在不同的域之間進行資料傳輸或通訊,比如用ajax向乙個不同的域請求資料,或者通過js獲取頁面中不同域的框架中 iframe 的資料。只要協議 網域名稱 埠有任何乙個不同,都被當作是不同的域。localhost 9000中的ajax 向localhost 9001中的...

cors解決跨域

cors是乙個w3c標準,全稱是 跨域資源共享 cross origin resource sharing 它允許瀏覽器向跨源伺服器,發出xmlhttprequest請求,從而克服了ajax只能同源使用的限制。cors需要瀏覽器和伺服器同時支援。目前,所有瀏覽器都支援該功能,ie瀏覽器不能低於ie1...

cors解決跨域

cors是乙個w3c標準,全稱是 跨域資源共享 cross origin resource sharing 它允許瀏覽器向跨源伺服器,發出xmlhttprequest 請求,從而克服了ajax只能同源 使用的限制。cors需要瀏覽器和伺服器同時支援。目前,所有瀏覽器都支援該功能,ie瀏覽器不能低於i...