Raison : l'en-tête CORS « Access-Control-Allow-Origin » est manquant
Message
Raison : l'en-tête CORS « Access-Control-Allow-Origin » est manquant
En anglais :
Reason: CORS header 'Access-Control-Allow-Origin' missing
Quel est le problème ?
La réponse à la requête CORS ne contient pas l'en-tête requis Access-Control-Allow-Origin, dont la fonction est de déterminer si le domaine à l'origine de la requête est autorisé à accéder à cette ressource.
Si vous avez le contrôle du serveur, vous pouvez ajouter l'origine de la requête à la liste des domaines autorisés à accéder aux ressources du serveur en l'ajoutant aux valeurs de l'en-tête Access-Control-Allow-Origin.
Par exemple, pour autoriser le site https://example.com à accéder aux ressources avec CORS, l'en-tête doit être comme suit :
Access-Control-Allow-Origin: https://example.com
Vous pouvez aussi configurer le serveur pour autoriser tous les domaines à accéder aux ressources avec le caractère générique *. Ceci ne devrait être utilisé que pour des API publiques. Les API privées ne devraient jamais utiliser *, et devraient à la place utiliser un domaine ou un ensemble de domaines. De plus, l'astérisque ne fonctionne que pour les requêtes ayant anonymous comme valeur pour l'attribut crossorigin ; il empêche également l'envoi d'identifiants (par exemple des cookies) dans une requête.
Access-Control-Allow-Origin: *
Attention : Autoriser n'importe quel site à accéder à une API privée est une mauvaise idée.
Pour autoriser n'importe quel site à faire des requêtes CORS sans utiliser le caractère générique * (par exemple, pour fournir des authentifiants), votre serveur doit lire la valeur de l'en-tête Origin de la requête et l'utiliser dans Access-Control-Allow-Origin, tout en ajoutant un en-tête Vary: Origin pour indiquer que certains en-têtes sont définis dynamiquement selon leur origine.
L'instruction exacte pour définir les en-têtes dépend de votre serveur web. Par exemple, dans Apache, ajoutez une ligne comme celle qui suit à la configuration du serveur (dans la section appropriée <Directory>, <Location>, <Files>, ou <VirtualHost>). La configuration se trouve généralement dans un fichier .conf (httpd.conf et apache.conf sont des noms couramment attribués à ces fichiers) ou dans un fichier .htaccess.
Header set Access-Control-Allow-Origin 'origin-list'
Avec Nginx, la commande pour mettre en place cet en-tête est :
add_header 'Access-Control-Allow-Origin' 'origin-list'
Voir aussi
- Les erreurs relatives au CORS
- Glossaire : CORS
- Introduction au CORS