Access-Control-Allow-Credentials 頭部

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

HTTP Access-Control-Allow-Credentials 響應頭部告訴瀏覽器伺服器是否允許在跨域 HTTP 請求中包含憑據。

憑據包括 cookie、傳輸層安全 (TLS) 客戶端證書,或包含使用者名稱和密碼的認證頭部。預設情況下,這些憑據不會在跨域請求中傳送,這樣做會使網站容易受到跨站請求偽造 (CSRF) 攻擊。

客戶端可以通過幾種方式要求在跨站請求中包含憑據:

當憑據被包含時:

  • 對於預檢請求:預檢請求不包含憑據。如果伺服器對預檢請求的響應將 Access-Control-Allow-Credentials 頭部設定為 true,那麼實際請求將包含憑據;否則,瀏覽器會報告網路錯誤。
  • 對於非預檢請求:請求將包含憑據,如果伺服器的響應沒有將 Access-Control-Allow-Credentials 頭部設定為 true,瀏覽器會報告網路錯誤。
頭型別 響應頭
禁止請求頭

語法

http
Access-Control-Allow-Credentials: true

指令

true

伺服器允許在跨域 HTTP 請求中包含憑據。這是此頭部唯一有效的值,並且區分大小寫。如果你不需要憑據,請完全省略此頭部,而不是將其值設定為 false

示例

允許憑據

http
Access-Control-Allow-Credentials: true

使用帶憑據的 fetch()

js
fetch(url, {
  credentials: "include",
});

使用帶憑據的 XMLHttpRequest

js
const xhr = new XMLHttpRequest();
xhr.open("GET", "http://example.com/", true);
xhr.withCredentials = true;
xhr.send(null);

規範

規範
Fetch
# http-access-control-allow-credentials

瀏覽器相容性

另見