CORS Checker
Vérifiez si une API accepte les requêtes depuis votre origin. Lance un preflight OPTIONS et une requête réelle, affiche tous les en-têtes Access-Control-*.
Qu'est-ce que CORS ?
CORS (Cross-Origin Resource Sharing) est un mécanisme de sécurité du navigateur. Par défaut, un script sur https://a.com ne peut pas lire les réponses de https://b.com. Le serveur sur b.com doit l'autoriser en envoyant des en-têtes Access-Control-Allow-Origin. Pour les requêtes non simples (POST JSON, en-têtes custom, etc.), le navigateur envoie d'abord un OPTIONS "preflight" pour vérifier — si la réponse du serveur n'autorise pas votre origin, méthode ou en-têtes, la requête réelle est bloquée et vous voyez une erreur CORS dans DevTools.
Explication des en-têtes CORS de réponse
Access-Control-Allow-OriginSpécifie quel origin est autorisé. Un origin précis, "*" (n'importe lequel), ou l'origin de la requête répété.
Access-Control-Allow-CredentialsSi "true", le navigateur envoie cookies/auth. Ne peut pas être combiné avec Allow-Origin: *.
Access-Control-Allow-MethodsQuelles méthodes HTTP le serveur autorise. Pertinent seulement dans la réponse preflight.
Access-Control-Allow-HeadersQuels en-têtes de requête le serveur autorise. Pertinent pour en-têtes non simples comme Authorization, X-* custom.
Access-Control-Expose-HeadersQuels en-têtes de réponse le navigateur peut exposer à JavaScript. Par défaut une liste courte.
Access-Control-Max-AgeCombien de temps (secondes) le navigateur peut cacher le résultat preflight. Des valeurs plus élevées évitent les OPTIONS répétés.
FAQ du CORS Checker
Pourquoi mon navigateur montre des erreurs CORS mais cet outil montre les en-têtes ?
CORS est appliqué par le navigateur, pas le serveur. Cet outil tourne sur notre backend, donc aucune règle CORS ne s'applique — nous voyons la réponse brute. Votre navigateur bloque la requête côté client selon les en-têtes Access-Control-*. Si les en-têtes ici ne correspondent pas à votre origin/méthode/en-têtes, le navigateur bloquera, même si le serveur a répondu.
Qu'est-ce qu'une requête preflight OPTIONS ?
Pour les requêtes cross-origin "non simples" (tout sauf GET/HEAD/POST simple avec en-têtes basiques), le navigateur envoie d'abord un OPTIONS demandant "puis-je faire cette requête ?". Le serveur répond avec Access-Control-Allow-Methods, Allow-Headers et Allow-Origin. Si elles autorisent votre requête réelle, le navigateur continue. Sinon, il bloque.
Pourquoi Access-Control-Allow-Origin: * ne suffit pas pour ma requête ?
Si votre requête inclut des credentials (cookies, en-tête Authorization, certificat client TLS), le navigateur refuse "*" et exige un origin précis. Le serveur doit répéter votre origin exact dans Access-Control-Allow-Origin et définir Access-Control-Allow-Credentials: true.
CORS s'applique-t-il aux requêtes serveur-à-serveur ?
Non. CORS est uniquement une fonctionnalité de sécurité du navigateur. curl, Node fetch côté serveur, Postman ou tout client non-navigateur ignore CORS. Si vous voyez une "erreur CORS" hors navigateur, le vrai problème est ailleurs (réseau, auth, URL incorrecte).
Comment corriger une erreur CORS ?
Corrigez côté serveur, pas client. Ajoutez le bon Access-Control-Allow-Origin (votre origin frontend), Allow-Methods (GET/POST/etc. que vous utilisez) et Allow-Headers (en-têtes custom ou auth). Pour les credentials, ajoutez Allow-Credentials: true. Vérifiez que OPTIONS est géré et renvoie 2xx. Les extensions navigateur qui désactivent CORS sont un raccourci de dev — ne déployez jamais une vraie app qui en dépend.