CORS errors
===========

Cross-Origin Resource Sharing (CORS) est une norme qui permet à un serveur d'assouplir la politique de même origine.

Celle-ci est utilisée pour autoriser explicitement certaines requêtes provenant d'autres sources tout en en rejetant d'autres. Par exemple, si un site offre un service intégrable, il peut être nécessaire d'assouplir certaines restrictions. La configuration d'une telle configuration CORS n'est pas nécessairement facile et peut présenter certains défis. Dans ces pages, nous examinerons quelques messages d'erreur CORS courants et comment les résoudre.

Si la configuration CORS n'est pas correctement effectuée, la console du navigateur affichera une erreur du type `"Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at $somesite"` (`"Requête Cross-Origin bloquée : La politique de même origine interdit la lecture de la ressource distante à $somesite"` en français) indiquant que la demande a été bloquée en raison d'une violation des règles de sécurité de CORS. Cependant, ce n'est pas nécessairement une erreur de configuration. Il est possible que la demande soit en fait intentionnellement refusée par l'application web de l'utilisateur et le service externe distant. Toutefois, si le terminal est destiné à être disponible, un certain débogage est nécessaire pour y parvenir.

Identifier le problème
----------------------

Pour saisir la cause de l'erreur, il faut préalablement découvrir la requête fautive, ainsi que la configuration erronée. Ces étapes peuvent être utiles au processus:

1. Rendez-vous sur le site défaillant et ouvrez les Developer Tools.
2. Essayez de reproduir la requête qui échoue et vérifiez la console pour trouver les messages de violation CORS, ce qui tournerait autours de:

![Firefox console showing CORS error](/fr/docs/Web/HTTP/CORS/Errors/cors-error2.png)

Le text de l'erreur sera probablement similaire à:
```

Cross-Origin Request Blocked: The Same Origin Policy disallows
reading the remote resource at https://some-url-here. (Reason:
additional information here).
```


**Note :** Pour des raisons de sécurité, il *est impossible* d'analyser les causes de l'erreur CORS via JavaScript. Seule une indication de l'échec de la requête sera fournie. Il faut donc absolument regarder manuellement les messages d'erreur de la console pour débugger.

Messages d'erreur CORS
----------------------

Firefox affiche les erreurs dans la console lors d'échec de requête CORS. Ce message contient entre autres un champ "reason" donnant un meilleur contexte quant à la raison de l'échec de la requête. Ces messages sont listés ci-dessous; chacun de ces liens pointent vers un article plus spécifique et contenant des pistes de solution.

* Raison: CORS désactivé
* Raison: la requête CORS a échoué
* Raison: l'en-tête CORS 'Origin' ne peut pas être ajouté (en-US)
* Raison: Requête CORS redirection externe non autorisée (en-US)
* Raison: Requête CORS non http
* Raison: En-tête CORS 'Access-Control-Allow-Origin' manquant
* Raison: l'en-tête CORS 'Access-Control-Allow-Origin' ne correspond pas à 'xyz'
* Raison: les informations d'identification ne sont pas prises en charge si l'en-tête CORS 'Access-Control-Allow-Origin' est '\*' (en-US)
* Raison: Méthode introuvable dans l'en-tête CORS 'Access-Control-Allow-Methods' (en-US)
* Raison: 'true' attendu dans l'en-tête CORS 'Access-Control-Allow-Credentials' (en-US)
* Raison: Échec du canal de contrôle en amont CORS (en-US)
* Raison: jeton 'xyz' non valide dans l'en-tête CORS 'Access-Control-Allow-Methods' (en-US)
* Raison: jeton 'xyz' non valide dans l'en-tête CORS 'Access-Control-Allow-Headers' (en-US)
* Raison: jeton 'xyz' manquant dans l'en-tête CORS 'Access-Control-Allow-Headers' du canal de contrôle en amont CORS (en-US)
* Raison: plusieurs en-têtes CORS 'Access-Control-Allow-Origin' ne sont pas autorisés (en-US)
Voir aussi
----------

* Glossaire: CORS
* CORS introduction
* Paramètres CORS côté serveur (en-US)
* Image compatible CORS
* Attributs des paramètres CORS (en-US)
* https://www.test-cors.org – une page pour tester les requêtes CORS