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.
Der HTTP-Access-Control-Allow-Credentials-Antwort-Header teilt Browsern mit, ob der Server zulässt, dass Anmeldedaten in Cross-Origin-HTTP-Anfragen enthalten sind.
Zu den Anmeldedaten gehören Cookies, Transport Layer Security (TLS)-Client-Zertifikate oder Authentifizierungs-Header, die einen Benutzernamen und ein Passwort enthalten. Standardmäßig werden diese Anmeldedaten nicht in Cross-Origin-Anfragen gesendet, da dies eine Website für Cross-Site Request Forgery (CSRF)-Angriffe anfällig machen kann.
Ein Client kann auf verschiedene Weise um die Einbeziehung von Anmeldedaten in Cross-Site-Anfragen bitten:
- Durch die Verwendung von
fetch(), indem diecredentials-Option auf"include"gesetzt wird. - Durch die Verwendung von
XMLHttpRequest, indem dieXMLHttpRequest.withCredentials-Eigenschaft auftruegesetzt wird. - Durch die Verwendung von
EventSource(), indem dieEventSource.withCredentials-Eigenschaft auftruegesetzt wird.
Wenn Anmeldedaten enthalten sind:
- Für vorgeprüfte Anfragen: Die Vorab-Anfrage enthält keine Anmeldedaten.
Wenn die Antwort des Servers auf die Vorab-Anfrage den
Access-Control-Allow-Credentials-Header auftruesetzt, dann wird die eigentliche Anfrage Anmeldedaten enthalten; andernfalls meldet der Browser einen Netzwerkfehler. - Für nicht vorgeprüfte Anfragen: Die Anfrage enthält Anmeldedaten, und wenn die Antwort des Servers den
Access-Control-Allow-Credentials-Header nicht auftruesetzt, meldet der Browser einen Netzwerkfehler.
| Header-Typ | Antwort-Header |
|---|---|
| Verbotener Header-Name | Nein |
Syntax
Access-Control-Allow-Credentials: true
Direktiven
true-
Der Server erlaubt es, dass Anmeldedaten in Cross-Origin-HTTP-Anfragen enthalten sind. Dies ist der einzige gültige Wert für diesen Header und er ist groß- und kleinschreibungsempfindlich. Wenn Sie keine Anmeldedaten benötigen, lassen Sie diesen Header ganz weg, anstatt seinen Wert auf
falsezu setzen.
Beispiele
Anmeldedaten zulassen:
Access-Control-Allow-Credentials: true
Verwendung von fetch() mit Anmeldedaten:
fetch(url, {
credentials: "include",
});
Verwendung von XMLHttpRequest mit Anmeldedaten:
const xhr = new XMLHttpRequest();
xhr.open("GET", "http://example.com/", true);
xhr.withCredentials = true;
xhr.send(null);
Spezifikationen
| Specification |
|---|
| Fetch Standard # http-access-control-allow-credentials |
Browser-Kompatibilität
BCD tables only load in the browser