CORS跨域原理

2021-08-13 15:08:28 字數 2136 閱讀 5357

請求

...

響應

access-control

-allow

-credentials:true

access-control

-allow

-origin:

預撿請求

request method:options

accept-language:zh-cn,en;q=0.8,zh;q=0.6

access-control-request-method:get

origin:

預撿響應

request method:options

status code:204 no content

access-control-allow-credentials:true

access-control-allow-methods:get,head,put,patch,post,delete

access-control-allow-origin:

伺服器短設定允許跨域後,response中會返回access-control-allow-origin,否則會報錯,可用xmlhttprequestonerror捕獲

origin請求源,瀏覽器自動新增

access-control-allow-credentials布林值,請求中是否包含cookie

jsonp只支援get請求,cors支援所有型別的http請求。jsonp的優勢在於支援老式瀏覽器,以及可以向不支援cors的**請求資料。

- 對於附帶身份憑證的請求,伺服器不得設定access-control-allow-origin的值為「*」。

這是因為請求的首部中攜帶了 cookie 資訊,如果access-control-allow-origin的值為「*」,請求將會失敗。而將access-control-allow-origin的值設定為 則請求將成功執行。

在跨域訪問時,xmlhttprequest物件的getresponseheader()方法只能拿到一些最基本的響應頭,cache-controlcontent-languagecontent-typeexpireslast-modifiedpragma,如果要訪問其他頭,則需要伺服器設定本響應頭。

access-control-expose-headers頭讓伺服器把允許瀏覽器訪問的頭放入白名單,例如:

access-control-expose-headers: x-my-custom-header, x-another-custom-header

這樣瀏覽器就能夠通過getresponseheader訪問x-my-custom-headerx-another-custom-header響應頭了。

指定了preflight請求的結果能夠被快取多久

- access-control

-max

-age: 86400

access-control

-request

-headers: >

[, >

]

CORS 跨域請求原理

摘要 cors,乙個看似有點 冷門 的領域,但在日常開發中實際上經常碰到這方面的問題。縱觀各大技術論壇,卻沒有幾個帖子能講透cors的那點事,本期雲享團邀請嘉賓深扒了cors的中外家史,為你打通跨域請求的 任督二脈 在日常的專案開發時會不可避免的需要進行跨域操作,而在實際進行跨域請求時,經常會遇到類...

CORS跨域請求

瀏覽器的同源策略會導致跨域,這裡同源策略又分為以下兩種 只要協議 網域名稱 埠有任何乙個不同,都被當作是不同的域,之間的請求就是跨域操作。在同源策略下會禁止跨域,實際上跨域請求時,請求會向伺服器發出,伺服器也會進行響應,但是當收到返回的資料時發現跨域所以忽略了返回的內容並報錯。當請求同時滿足下面兩個...

跨域解決CORS

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