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 客户端证书,或包含用户名和密码的认证标头。默认情况下,这些凭据不会在跨源请求中发送,因为这样做可能会使站点容易受到跨站请求伪造攻击。

客户端可以通过以下两种方式之一在跨站请求中包含凭据:

如果客户端已请求时包含凭据:

  • 如果请求是预检请求,那么在预检请求时不会包含凭据。如果服务器对预检请求的响应将 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
# http-access-control-allow-credentials

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Access-Control-Allow-Credentials

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

参见