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 |
浏览器兼容性
加载中…