Access-Control-Allow-Credentials 頭部
HTTP Access-Control-Allow-Credentials 響應頭部告訴瀏覽器伺服器是否允許在跨域 HTTP 請求中包含憑據。
憑據包括 cookie、傳輸層安全 (TLS) 客戶端證書,或包含使用者名稱和密碼的認證頭部。預設情況下,這些憑據不會在跨域請求中傳送,這樣做會使網站容易受到跨站請求偽造 (CSRF) 攻擊。
客戶端可以通過幾種方式要求在跨站請求中包含憑據:
- 使用
fetch(),透過將credentials選項設定為"include"。 - 使用
XMLHttpRequest,透過將XMLHttpRequest.withCredentials屬性設定為true。 - 使用
EventSource(),透過將EventSource.withCredentials屬性設定為true。
當憑據被包含時:
- 對於預檢請求:預檢請求不包含憑據。如果伺服器對預檢請求的響應將
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 |
瀏覽器相容性
載入中…