Access-Control-Allow-Credentials
Access-Control-Allow-Credentials
回應標頭告訴瀏覽器伺服器是否允許跨來源 HTTP 請求包含憑證。
憑證包括 Cookie、TLS 用戶端憑證或包含用戶名和密碼的驗證標頭。默認情況下,這些憑證不會在跨來源請求中發送,這樣做可能會使網站容易受到 CSRF 攻擊。
用戶端可以通過以下兩種方式之一請求在跨站點請求中包含憑證:
- 使用
fetch()
,在Request()
構造函數中設置credentials
選項為"include"
。 - 使用
XMLHttpRequest
,將XMLHttpRequest.withCredentials
屬性設置為true
。
如果用戶端要求包含憑證:
-
如果請求是預檢請求,則預檢請求不包括憑證。如果伺服器對預檢請求的回應設置了
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