CORS expliqué

Guide complet du partage de ressources entre origines — fonctionnement, chaque en-tête expliqué et erreurs courantes avec solutions.

Aperçu

Qu'est-ce que le CORS ?

Le Cross-Origin Resource Sharing (CORS) est un mecanisme base sur les en-tetes HTTP qui permet a un serveur d'indiquer toute origine (domaine, schema ou port) autre que la sienne a partir de laquelle un navigateur devrait autoriser le chargement de ressources. Les navigateurs appliquent par defaut la politique de meme origine (Same-Origin Policy), qui empeche les pages web d'effectuer des requetes vers une origine differente de celle qui a servi la page.

La politique de meme origine

Deux URLs ont la meme origine si elles partagent le meme schema (http/https), le meme hote et le meme port. Par exemple, https://app.example.com et https://api.example.com sont des origines differentes car l'hote differe. La politique de meme origine empeche un site malveillant de lire des donnees sensibles d'un autre site -- le CORS est le mecanisme qui assouplit cette restriction de maniere controlee.

Requetes simples vs. Preflight

Une "requete simple" utilise GET, HEAD ou POST avec uniquement des en-tetes securises CORS et ne declenche pas de preflight. Toutes les autres requetes cross-origin -- celles utilisant des methodes comme PUT ou DELETE, ou incluant des en-tetes comme Authorization -- declenchent un preflight : le navigateur envoie d'abord une requete OPTIONS pour demander la permission au serveur avant d'envoyer la requete reelle.

Comment fonctionne CORS

Requête simple

Navigateur
GET /api/data
Origin: https://app.example.com
Serveur
200 OK
Access-Control-Allow-Origin: *
Réponse partagée avec JS

Requête de pré-vérification

Navigateur
OPTIONS /api/data
Access-Control-Request-Method: DELETE
Serveur
204 No Content
Access-Control-Allow-Methods: DELETE
Navigateur
DELETE /api/data
Origin: https://app.example.com
Réponse partagée avec JS

En-têtes CORS

10 sur 10 affichés

Erreurs courantes

8 sur 8 affichés

Guides associés

Essayez dans RequestDock

Envoyez de vraies requêtes HTTP et inspectez les réponses — directement dans votre navigateur.