CORS 跨域資源共享 理論篇

2021-08-11 15:07:25 字數 2277 閱讀 1805

cors:cross-origin resource sharing (跨域資源共享)

響應首部中可以攜帶乙個 access-control-allow-origin 字段,其語法如下:

access-control

-allow

-origin:

|*

其中,origin 引數的值指定了允許訪問該資源的外域 uri。對於不需要攜帶身份憑證的請求,伺服器可以指定該字段的值為萬用字元,表示允許來自所有域的請求。

例如,下面的字段值將允許來自 的請求:

access-control

-allow

-origin:

如果服務端指定了具體的網域名稱而非「*」,那麼響應首部中的 vary 欄位的值必須包含 origin。這將告訴客戶端:伺服器對不同的源站返回不同的內容。

在跨域訪問時,xmlhttprequest物件的getresponseheader()方法只能拿到一些最基本的響應頭,cache-control、content-language、content-type、expires、last-modified、pragma,如果要訪問其他頭,則需要伺服器設定本響應頭。

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

access-control

-expose

-headers: x-my

-custom

-header, x-another

-custom

-header

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

access-control-max-age 頭指定了preflight請求的結果能夠被快取多久,請參考本文在前面提到的preflight例子。

access-control

-max

-age: >

delta-seconds 引數表示preflight請求的結果在多少秒內有效。

access-control-allow-credentials 頭指定了當瀏覽器的credentials設定為true時是否允許瀏覽器讀取response的內容。當用在對preflight預檢測請求的響應中時,它指定了實際的請求是否可以使用credentials。請注意:簡單 get 請求不會被預檢;如果對此類請求的響應中不包含該欄位,這個響應將被忽略掉,並且瀏覽器也不會將相應內容返回給網頁。

access-control

-allow

-credentials: true

也就是如果不設定這個,那麼帶cookie的請求是可以發給服務端的,但是瀏覽器也不會將相應內容返回給網頁。

access-control-allow-methods 首部字段用於預檢請求的響應。其指明了實際請求所允許使用的 http 方法。

access-control-allow-methods: [, ]*
access-control-allow-headers 首部字段用於預檢請求的響應。其指明了實際請求中允許攜帶的首部字段。

access-control

-allow

-headers: >

[, >

]*

origin 首部字段表明預檢請求或實際請求的源站。

origin:
origin 引數的值為源站 uri。它不包含任何路徑資訊,只是伺服器名稱。

注意,不管是否為跨域請求,origin 字段總是被傳送。

access-control-request-method 首部字段用於預檢請求。其作用是,將實際請求所使用的 http 方法告訴伺服器。

access-control-request-method:

access-control-request-headers 首部字段用於預檢請求。其作用是,將實際請求所攜帶的首部字段告訴伺服器。

access-control

-request

-headers: >

[, >

]*

跨域資源共享 CORS

cors需要瀏覽器和伺服器同時支援。目前,所有瀏覽器都支援該功能。前端 對應於前端請求來說cors通訊與同源的ajax通訊沒有差別,完全一樣。瀏覽器一旦發現ajax請求跨源,就會自動新增一些附加的頭資訊,有時還會多出一次附加的請求,但使用者不會有感覺。後端 只要伺服器實現了cors介面,就可以跨源通...

跨域資源共享 CORS

跨域資源共享 cross origin resource sharing 是一種機制,它使用額外的 http 頭部告訴瀏覽器可以讓乙個web應用進行跨域資源請求。若乙個請求同時滿足下述所有條件,則該請求可視為 簡單請求 注 灰色字型內容了解即可 手動設定的頭部字段只能是 注意 也可以設定 forbi...

CORS 跨域資源共享

foreword cors principle 三個訪問控制場景 簡單請求 預請求帶憑據的請求 http請求頭 http響應頭 ie對cors的實現 瀏覽器的支援 由於同源策略限制從乙個源載入的文件或指令碼與來自另乙個源的資源進行互動。在web開發中跨域是難免的問題,或是開發時的跨域,或是線上資源請...