En-tête Access-Control-Allow-Headers
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.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
L'en-tête de réponse HTTP Access-Control-Allow-Headers est utilisé en réponse à une requête préliminaire pour indiquer les en-têtes HTTP qui peuvent être utilisés lors de la requête réelle.
Cet en-tête est requis si la requête préliminaire contient Access-Control-Request-Headers.
Note :
Les en-têtes de requête sûrs pour le CORS sont toujours autorisés et ne sont généralement pas listés dans Access-Control-Allow-Headers sauf s'il est nécessaire de contourner les restrictions supplémentaires de la liste sûre.
| Type d'en-tête | En-tête de réponse |
|---|
Syntaxe
Access-Control-Allow-Headers: <header-name>
Access-Control-Allow-Headers: <header-name>, <header-name>
Access-Control-Allow-Headers: *
Directives
<header-name>-
Le nom d'un en-tête de requête pris en charge. L'en-tête peut lister n'importe quel nombre d'en-têtes, séparés par des virgules.
*(joker)-
Tout en-tête. La valeur
*n'est considérée comme une valeur joker spéciale que pour les requêtes sans justificatifs (requêtes sans cookies HTTP ou information d'authentification HTTP). Pour les requêtes avec justificatifs, elle est traitée comme le nom d'en-tête littéral*sans sémantique particulière. L'en-têteAuthorizationn'accepte pas le joker et doit toujours être listé explicitement.
Exemples
>Implémentation d'un en-tête personnalisé
Voici un exemple d'en-tête Access-Control-Allow-Headers.
Il indique qu'un en-tête personnalisé nommé X-Custom-Header est pris en charge par les requêtes CORS vers le serveur, en plus des en-têtes de requête sûrs pour le CORS.
Access-Control-Allow-Headers: X-Custom-Header
Prise en charge de plusieurs en-têtes
Cet exemple montre Access-Control-Allow-Headers lorsqu'il indique la prise en charge de plusieurs en-têtes.
Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests
Contournement des restrictions supplémentaires sur les en-têtes sûrs pour le CORS
Bien que les en-têtes de requête sûrs pour le CORS soient toujours autorisés et n'aient généralement pas besoin d'être listés dans Access-Control-Allow-Headers, les lister permet de contourner les restrictions supplémentaires qui s'appliquent.
Access-Control-Allow-Headers: Accept
Gestion des requêtes préliminaires
Voici un exemple de requête préliminaire impliquant Access-Control-Allow-Headers.
Requête
Tout d'abord, la requête préliminaire est une requête OPTIONS qui inclut une combinaison des trois en-têtes de requête préliminaire : Access-Control-Request-Method, Access-Control-Request-Headers et Origin.
La requête préliminaire ci-dessous indique au serveur que nous souhaitons envoyer une requête CORS GET avec les en-têtes listés dans Access-Control-Request-Headers (Content-Type et X-Requested-With).
OPTIONS /resource/foo
Access-Control-Request-Method: GET
Access-Control-Request-Headers: content-type,x-requested-with
Origin: https://www.example.com
Réponse
Si la requête CORS indiquée par la requête préliminaire est autorisée, le serveur répondra à la requête préliminaire avec un message indiquant l'origine, les méthodes et les en-têtes autorisés. Ci-dessous, on voit que Access-Control-Allow-Headers inclut les en-têtes demandés.
HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Access-Control-Allow-Origin: https://www.example.com
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: Content-Type, x-requested-with
Access-Control-Max-Age: 86400
Si la méthode demandée n'est pas prise en charge, le serveur répondra avec une erreur.
Spécifications
| Specification |
|---|
| Fetch> # http-access-control-allow-headers> |
Compatibilité des navigateurs
Voir aussi
- L'en-tête HTTP
Access-Control-Allow-Origin - L'en-tête HTTP
Access-Control-Expose-Headers - L'en-tête HTTP
Access-Control-Allow-Methods - L'en-tête HTTP
Access-Control-Request-Headers