Access-Control-Allow-Credentials

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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

此標頭的唯一有效值是 true(區分大小寫)。如果不需要憑證,請完全省略此標頭(而不是將其值設置為 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);

規範

Specification
Fetch Standard
# http-access-control-allow-credentials

瀏覽器相容性

BCD tables only load in the browser

參見