Access-Control-Allow-Credentials
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
- 
    此标头的唯一有效值为 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);
规范
| 规范 | 
|---|
| 获取标准 # http-access-control-allow-credentials | 
浏览器兼容性
BCD 表格仅在浏览器中加载