Testeur CORS

Testez les en-têtes CORS et les politiques de partage de ressources entre origines. Gratuit, rapide et entièrement dans votre navigateur, sans inscription.

Mis à jour le

Share:
Home/Website Tools/CORS Tester & Debugger

CORS Tester & Debugger

Test CORS headers for any API endpoint and debug cross-origin issues.

CORS Tester

Questions Fréquentes

Pourquoi mon navigateur affiche-t-il « blocked by CORS policy » alors que l'API fonctionne dans Postman ?

Postman et curl ne sont pas des navigateurs, donc ils ignorent complètement la politique de même origine — ils envoient la requête et lisent la réponse quels que soient les en-têtes reçus. Un navigateur est plus strict : lorsque du JavaScript sur une origine appelle un schéma, un domaine ou un port différent, il ne laisse votre code lire la réponse que si le serveur renvoie le bon en-tête Access-Control-Allow-Origin. Si cet en-tête est absent, la requête atteint quand même le serveur et renvoie des données, mais le navigateur masque la réponse à votre script et consigne l'erreur CORS dans la console. C'est pourquoi un point d'accès peut sembler sain dans Postman mais échouer dans la console. Cet outil examine les en-têtes CORS réellement renvoyés par un serveur, afin que vous puissiez confirmer que le problème vient d'une configuration côté serveur plutôt que de votre code fetch. Collez votre point d'accès pour voir exactement quels en-têtes sont présents.

Qu'est-ce qu'une requête préliminaire (preflight) CORS et quand le navigateur en envoie-t-elle une ?

Une requête préliminaire est une requête OPTIONS automatique que le navigateur envoie avant la requête réelle, pour demander au serveur si l'appel effectif est autorisé. Cela se produit pour les requêtes « non simples » : des méthodes comme PUT, DELETE ou PATCH, des en-têtes de requête personnalisés, ou des types de contenu comme application/json. Le navigateur inclut Access-Control-Request-Method et Access-Control-Request-Headers, et le serveur doit répondre avec des valeurs Access-Control-Allow-Methods et Access-Control-Allow-Headers correspondantes, faute de quoi la requête réelle ne se déclenche jamais. Les requêtes GET et POST simples avec des en-têtes standards sautent cette étape. Comme les preflights sont invisibles dans la plupart des codes fetch, une poignée de main OPTIONS qui échoue est une cause fréquente et déroutante d'erreurs CORS. Ce testeur vous permet d'envoyer la requête en OPTIONS et d'examiner les méthodes et en-têtes autorisés que le serveur déclare, afin de vérifier directement le contrat de preflight au lieu de deviner à partir d'un message bloqué dans la console.

Pourquoi Access-Control-Allow-Credentials échoue-t-il quand l'origine est un joker ?

La spécification CORS interdit de combiner des requêtes avec identifiants et une origine en joker, et chaque navigateur applique cette règle. Lorsque vous envoyez des cookies ou des en-têtes d'autorisation en cross-origin, le serveur doit renvoyer une origine précise dans Access-Control-Allow-Origin — jamais l'astérisque générique. Si un serveur répond à la fois avec Access-Control-Allow-Credentials: true et un Access-Control-Allow-Origin réglé sur un joker, le navigateur rejette purement et simplement la réponse et votre requête échoue, même si les en-têtes semblent permissifs. La solution consiste à refléter l'origine exacte de la requête au lieu d'utiliser un joker, tout en gardant l'en-tête credentials réglé sur true. Cet outil signale exactement cette combinaison dangereuse comme une erreur dans son analyse CORS, afin que vous puissiez la repérer avant qu'elle ne casse un front-end authentifié. Testez votre point d'accès avec identifiants pour confirmer que l'origine est précise plutôt qu'en joker.

Un Access-Control-Allow-Origin en joker (*) est-il sûr à utiliser ?

Une origine en joker permet à n'importe quel site sur Internet d'effectuer des requêtes cross-origin vers votre API et d'en lire la réponse, ce qui convient parfaitement à des données véritablement publiques comme des jeux de données ouverts, des API publiques en lecture seule, ou du JSON statique. Cela devient risqué dès que le point d'accès renvoie quelque chose de sensible ou qu'il est accessible avec les cookies d'un utilisateur, car un site malveillant pourrait alors l'appeler pour le compte d'un visiteur. En règle générale, restreignez Access-Control-Allow-Origin aux domaines précis qui ont légitimement besoin d'y accéder plutôt que de l'ouvrir à tout le monde, et n'associez jamais un joker avec des identifiants. Ce testeur affiche une origine en joker comme un avertissement et un domaine précis comme bon, afin que vous puissiez voir d'un coup d'œil à quel point un point d'accès est exposé. Testez votre URL ici pour vérifier si sa politique d'origine correspond à la sensibilité des données qu'il sert.

À quoi sert l'en-tête Access-Control-Max-Age pour la performance du CORS ?

Access-Control-Max-Age indique au navigateur pendant combien de secondes il peut mettre en cache le résultat d'une requête préliminaire OPTIONS. Tant que ce cache est valide, le navigateur saute l'aller-retour supplémentaire et envoie directement la requête réelle, ce qui accélère nettement les applications qui déclenchent de nombreuses requêtes non simples vers le même point d'accès. Sans cela, le navigateur peut refaire un preflight à chaque appel, ajoutant de la latence. Les valeurs sont plafonnées par le navigateur — Chrome limite la mise en cache à quelques heures, quelle que soit la valeur indiquée — donc régler un nombre énorme n'apportera rien au-delà de ce plafond. L'absence de Max-Age signifie simplement qu'il n'y a aucune mise en cache du preflight. Cet outil lit l'en-tête et convertit les secondes brutes en minutes dans son analyse, afin que vous puissiez juger rapidement à quel point les preflights sont mis en cache de façon agressive. Testez votre point d'accès pour voir s'il définit un Max-Age utile.

À propos du Testeur CORS

Le Testeur CORS vérifie comment un point d'accès API réagit aux requêtes cross-origin, afin que vous puissiez voir exactement quels en-têtes CORS (Cross-Origin Resource Sharing) un serveur renvoie et pourquoi un navigateur bloque votre front-end. Saisissez une URL, choisissez une méthode HTTP, et l'outil interroge le point d'accès puis affiche le code de statut, les en-têtes liés au CORS, l'ensemble complet des en-têtes de réponse, et le début du corps de la réponse. Il est conçu pour les développeurs front-end, les ingénieurs API, et toute personne qui cherche à résoudre l'erreur « blocked by CORS policy » qui apparaît dans la console du navigateur.

Comme un navigateur ne permet pas à une page de lire directement une réponse cross-origin brute, l'outil fait transiter votre requête par un proxy public (corsproxy.io) et examine les en-têtes reçus en retour. Cela signifie que la requête quitte bien votre appareil — testez donc des points d'accès publics ou de préproduction plutôt que d'y coller des identifiants privés que vous ne voudriez pas exposer à un tiers. Aucune inscription, aucun compte ni installation n'est nécessaire pour l'utiliser.

Ce que vérifie le Testeur CORS

L'outil lit et explique les en-têtes de réponse CORS standards :

  • Access-Control-Allow-Origin — quelle(s) origine(s) le serveur autorise. L'outil signale si le CORS est configuré ou non, et si la valeur est un domaine précis ou un joker (wildcard).
  • Access-Control-Allow-Methods — les verbes HTTP que le point d'accès accepte en cross-origin.
  • Access-Control-Allow-Headers — les en-têtes de requête que le serveur accepte lors d'une requête préliminaire (preflight).
  • Access-Control-Allow-Credentials — si les cookies et les en-têtes d'autorisation sont autorisés.
  • Access-Control-Max-Age — pendant combien de temps, en secondes, le navigateur peut mettre en cache le résultat du preflight.
  • Access-Control-Expose-Headers — quels en-têtes de réponse votre JavaScript est autorisé à lire.

Vous pouvez envoyer la requête en GET, POST, PUT, DELETE, OPTIONS ou PATCH, ajouter n'importe quel en-tête de requête personnalisé sous forme de paires clé-valeur, et joindre un corps de requête JSON pour les méthodes POST, PUT et PATCH. Les résultats sont répartis en trois vues : une Analyse CORS en langage clair, la liste complète des En-têtes de réponse (copiable), et le Corps de la réponse.

Lire l'analyse

Chaque constat est classé comme bon, avertissement, erreur ou informatif, pour que vous puissiez parcourir les résultats rapidement :

  • Un en-tête Access-Control-Allow-Origin manquant est signalé comme une erreur — le serveur n'a aucune configuration CORS, donc les navigateurs bloqueront la lecture.
  • Une origine en joker (*) est signalée comme un avertissement, car elle permet à n'importe quel site d'appeler l'API. C'est acceptable pour des données entièrement publiques, mais risqué pour tout ce qui est sensible.
  • La combinaison de Access-Control-Allow-Credentials: true avec une origine en joker est signalée comme une erreur, car la spécification l'interdit et les navigateurs la rejettent purement et simplement. Les requêtes avec identifiants exigent une origine explicite.
  • Une valeur de Max-Age est convertie en minutes afin que vous puissiez voir à quel point les réponses de preflight sont mises en cache de façon agressive.

Pourquoi tester le CORS est important

Le CORS est un mécanisme de sécurité du navigateur : par défaut, le JavaScript d'une origine ne peut pas lire les réponses provenant d'une origine différente (un schéma, un domaine ou un port différent). Pour les requêtes « non simples » — en-têtes personnalisés, types de contenu JSON, ou méthodes comme PUT et DELETE — le navigateur envoie d'abord une requête préliminaire OPTIONS, et la requête réelle ne se poursuit que si le serveur répond avec les bons en-têtes. Quand cette poignée de main échoue, la requête est bloquée avant même que votre code ne voie les données, ce qui explique pourquoi les erreurs CORS sont si fréquentes lorsqu'on connecte une application monopage à une API séparée ou à un service tiers.

Tester le point d'accès directement vous indique si le problème vient du serveur (en-têtes manquants ou mal configurés) plutôt que de votre code fetch. Lorsqu'aucun en-tête CORS n'est détecté, le Testeur CORS affiche également des extraits de configuration prêts à copier-coller pour Express.js et Node, Nginx, et le fichier .htaccess d'Apache, afin que vous puissiez corriger l'origine et les méthodes côté serveur puis retester. Collez un point d'accès ci-dessus pour voir comment il réagit et obtenir une lecture claire de sa politique cross-origin.