Le CORS (Cross-Origin Resource Sharing) est un mécanisme de sécurité des navigateurs qui contrôle quels domaines sont autorisés à effectuer des requêtes HTTP cross-origin vers votre API. Il étend la same-origin policy en permettant des exceptions explicites et contrôlées.
Comment ça fonctionne
Par défaut, la same-origin policy bloque les requêtes entre domaines différents. Le CORS ajoute un échange de headers : le navigateur envoie une requête preflight OPTIONS pour vérifier les permissions, et le serveur répond avec des headers Access-Control-Allow-* définissant les origines, méthodes et headers autorisés.
Erreurs courantes
Utiliser le wildcard * avec des credentials (cookies, tokens) est interdit par la spec. Oublier de gérer la requête preflight OPTIONS provoque des erreurs mystérieuses. Et surtout : confondre CORS avec une sécurité côté serveur est dangereux — CORS protège les utilisateurs du navigateur, pas votre API.
Le CORS est le mécanisme de sécurité web le plus mal compris — il protège les utilisateurs, pas les serveurs. Le comprendre vraiment, c'est éviter des heures de débogage.