En-tête Access-Control-Allow-Credentials
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'en-tête de réponse HTTP Access-Control-Allow-Credentials indique aux navigateurs si le serveur autorise l'inclusion de justificatifs dans les requêtes HTTP inter-origines.
Les justificatifs incluent les cookies, les certificats client Transport Layer Security (TLS), ou les en-têtes d'authentification contenant un nom d'utilisateur·ice et un mot de passe. Par défaut, ces justificatifs ne sont pas envoyés dans les requêtes inter-origines, et le faire peut rendre un site vulnérable aux attaques de Cross-Site Request Forgery (CSRF).
Un client peut demander l'inclusion de justificatifs dans les requêtes inter-sites de plusieurs façons :
- En utilisant
fetch(), en définissant l'optioncredentialsà"include". - En utilisant
XMLHttpRequest, en définissant la propriétéXMLHttpRequest.withCredentialsàtrue. - En utilisant
EventSource(), en définissant la propriétéEventSource.withCredentialsàtrue.
Lorsque des justificatifs sont inclus :
- Pour les requêtes préliminaires : la requête préliminaire n'inclut pas de justificatifs.
Si la réponse du serveur à la requête préliminaire définit l'en-tête
Access-Control-Allow-Credentialsàtrue, alors la requête réelle inclura les justificatifs ; sinon, le navigateur signale une erreur réseau. - Pour les requêtes non préliminaires : la requête inclura les justificatifs, et si la réponse du serveur ne définit pas l'en-tête
Access-Control-Allow-Credentialsàtrue, le navigateur signale une erreur réseau.
| Type d'en-tête | En-tête de réponse |
|---|
Syntaxe
Access-Control-Allow-Credentials: true
Directives
true-
Le serveur autorise l'inclusion de justificatifs dans les requêtes HTTP inter-origines. C'est la seule valeur valide pour cet en-tête et elle est sensible à la casse. Si vous n'avez pas besoin de justificatifs, omettez complètement cet en-tête au lieu de définir sa valeur à
false.
Exemples
Autoriser les justificatifs :
Access-Control-Allow-Credentials: true
Utilisation de fetch() avec justificatifs :
fetch(url, {
credentials: "include",
});
Utilisation de XMLHttpRequest avec justificatifs :
const xhr = new XMLHttpRequest();
xhr.open("GET", "http://example.com/", true);
xhr.withCredentials = true;
xhr.send(null);
Spécifications
| Specification |
|---|
| Fetch> # http-access-control-allow-credentials> |
Compatibilité des navigateurs
Voir aussi
- La propriété
XMLHttpRequest.withCredentials - La méthode
Request()