Headers: Access-Control-Allow-Credentials
Access-Control-Allow-Credentials header
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.
The HTTP Access-Control-Allow-Credentials response header tells browsers whether the server allows credentials to be included in cross-origin HTTP requests.
Credentials include cookies, Transport Layer Security (TLS) client certificates, or authentication headers containing a username and password. By default, these credentials are not sent in cross-origin requests, and doing so can make a site vulnerable to Cross-Site Request Forgery (CSRF) attacks.
A client can ask for credentials to be included in cross-site requests in several ways:
- Using
fetch(), by setting thecredentialsoption to"include". - Using
XMLHttpRequest, by setting theXMLHttpRequest.withCredentialsproperty totrue. - Using
EventSource(), by setting theEventSource.withCredentialsproperty totrue.
When credentials are included:
- For preflighted requests: The preflight request does not include credentials. If the server's response to the preflight request sets the
Access-Control-Allow-Credentialsheader totrue, then the real request will include credentials; otherwise, the browser reports a network error. - For non-preflighted requests: The request will include credentials, and if the server's response does not set the
Access-Control-Allow-Credentialsheader totrue, the browser reports a network error.
| Header type | Response header |
|---|
Syntax
Access-Control-Allow-Credentials: true
Directives
true-
The server allows credentials to be included in cross-origin HTTP requests. This is the only valid value for this header and is case-sensitive. If you don't need credentials, omit this header entirely rather than setting its value to
false.
Examples
Allow credentials:
Access-Control-Allow-Credentials: true
Using fetch() with credentials:
fetch(url, {
credentials: "include",
});
Using XMLHttpRequest with credentials:
const xhr = new XMLHttpRequest();
xhr.open("GET", "http://example.com/", true);
xhr.withCredentials = true;
xhr.send(null);
Specifications
| Specification |
|---|
| Fetch> # http-access-control-allow-credentials> |
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
4 | 12 | 3.5 | 12 | 4 | 18 | 4 | 12 | 3.2 | 1.0 | 2 | 3.2 |
See also
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Access-Control-Allow-Credentials