Générateur & testeur CORS — Corriger « Blocked by CORS Policy »

Vous voyez « has been blocked by CORS policy » ? Indiquez quels sites peuvent appeler votre API — origines, méthodes, en-têtes, identifiants — et obtenez les bons en-têtes Access-Control-* sous forme de code pour Express, Nginx, Apache, Netlify, Vercel, Next.js, Cloudflare Workers ou PHP. Testez ensuite une URL en ligne : le testeur envoie le même preflight qu’un navigateur et vous indique, en-tête par en-tête, si la requête est autorisée.

Mis à jour le
Configuration CORS

Cet outil récupère depuis notre serveur l’URL publique que vous saisissez. Les résultats restent quelques minutes en mémoire temporaire et ne sont jamais enregistrés en base de données.

Comment utiliser : Générateur & testeur CORS

  1. Dans Générer les en-têtes, listez les origines autorisées à appeler votre API (ou autorisez toutes les origines), cochez les méthodes et saisissez les en-têtes de requête envoyés par votre front-end — en général Content-Type et Authorization.
  2. Cochez Autoriser les identifiants uniquement si le navigateur doit envoyer des cookies ou un en-tête Authorization avec credentials: 'include'.
  3. Choisissez votre plateforme et copiez le code — Express, Nginx, Apache, Netlify, Vercel, Next.js, Workers ou PHP.
  4. Déployez, puis passez à Tester une URL : saisissez l’URL de l’API et l’origine de la page pour voir si le preflight et la requête réelle passeraient.

Pourquoi les navigateurs bloquent les requêtes

Une page située sur https://app.example.com ne peut lire une réponse de https://api.example.com que si l’API l’autorise explicitement avec des en-têtes CORS. Pour tout ce qui dépasse un simple GET ou un POST de formulaire — corps JSON, en-têtes Authorization, PUT ou DELETE — le navigateur envoie d’abord un preflight : une requête OPTIONS qui demande « cette origine peut-elle utiliser cette méthode et ces en-têtes ? ». Si la réponse est absente ou incorrecte, vous voyez « has been blocked by CORS policy » et votre code ne reçoit jamais la réponse.

En-têteCe qu’il doit contenir
Access-Control-Allow-OriginL’origine appelante exacte, ou * (non autorisé avec des identifiants)
Access-Control-Allow-MethodsLa méthode de la requête réelle (preflight uniquement)
Access-Control-Allow-HeadersChaque en-tête de requête non standard, comme Authorization ou Content-Type: application/json
Access-Control-Allow-Credentialstrue lorsque des cookies ou des identifiants sont envoyés
Access-Control-Max-AgeDurée pendant laquelle le navigateur peut mettre en cache la réponse du preflight
Vary: OriginNécessaire lorsque l’origine autorisée change selon la requête, pour que les caches ne servent pas la réponse d’une origine à une autre

Fonctionnement du testeur

Notre serveur envoie la requête avec un en-tête Origin et, si le navigateur en aurait besoin, un preflight OPTIONS avec Access-Control-Request-Method et -Headers — exactement comme Chrome ou Firefox. Il vérifie ensuite la réponse selon les règles CORS appliquées par les navigateurs. Les serveurs qui n’autorisent que certaines adresses IP ou qui exigent des cookies peuvent répondre différemment aux vrais utilisateurs. Voir aussi : Vérificateur d’en-têtes HTTP, Testeur d’API, Vérificateur d’en-têtes de sécurité.

Aussi recherché comme : générateur cors, testeur cors, vérificateur cors, blocked by cors policy, access-control-allow-origin, test preflight cors, cors express, cors nginx.

Outils complémentaires : Générateur & testeur CORS

  • Générateur CSP — Indiquez ce que charge votre site (scripts, styles, images, polices, analytics, intégrations) et obtenez une Content-Security-Policy qui autorise exactement cela, avec des alertes pour les réglages risqués.
  • cURL vers code — Collez une commande curl, issue de la documentation d’une API ou de l’option « Copier en tant que cURL » des outils de développement de votre navigateur, et obtenez du code prêt à l’emploi pour six langages, avec les en-têtes, le corps de requête et l’authentification repris à l’identique.
  • Générateur de configuration Nginx — Choisissez ce que Nginx doit faire — servir un site statique ou une application SPA, agir en tant que proxy vers une application Node/Python, ou exécuter du code PHP — et cochez les options supplémentaires.
  • Analyseur d’en-têtes e-mail — Collez les en-têtes bruts d’un e-mail pour voir tout son parcours : chaque saut entre serveurs avec le temps qu’il a pris, les résultats SPF, DKIM et DMARC, l’IP d’origine et les signaux d’alerte, comme une adresse Reply-To ou Return-Path incohérente.

Questions fréquentes

Comment corriger « No Access-Control-Allow-Origin header is present » ?
L’API doit envoyer Access-Control-Allow-Origin avec l’origine de votre page (ou *). Générez la configuration pour votre serveur ici, déployez-la, puis lancez le testeur pour le vérifier. La correction se fait toujours sur le serveur de l’API, jamais dans le code front-end.
Pourquoi ne puis-je pas utiliser * avec des identifiants ?
Les navigateurs refusent Access-Control-Allow-Origin: * lorsque la requête contient des cookies ou des identifiants. Listez plutôt les origines exactes (ou renvoyez l’Origin de la requête après l’avoir vérifiée) et envoyez Access-Control-Allow-Credentials: true.
Pourquoi mon API renvoie-t-elle 404 ou 405 pour OPTIONS ?
Le preflight est une requête OPTIONS que vos routes ne gèrent peut-être pas. Elle doit renvoyer un code 2xx avec les en-têtes CORS — le code généré répond aux OPTIONS avec un 204.
Est-il sûr d’autoriser n’importe quelle origine ?
Pour une API publique en lecture seule, sans cookies, * convient. Pour tout ce qui utilise des connexions ou des cookies, n’autorisez que les origines de confiance : renvoyer n’importe quelle origine avec des identifiants permet à chaque site web d’agir au nom de vos utilisateurs connectés.

Outils similaires