Vérificateur CORS

Vérifiez la configuration du partage de ressources cross-origin (CORS) pour n'importe quelle URL. Inspectez les en-têtes de réponse Access-Control-*, exécutez une requête de pré-vérification (OPTIONS) facultative avec un Origin/méthode/en-têtes personnalisés, et détectez les mauvaises configurations courantes telles que le caractère générique + credentials, l'absence de Vary: Origin, ou des allow-headers trop permissifs.

Loading…

À propos Vérificateur CORS

Collez une URL d'API ou de page et vérifiez si les navigateurs autoriseront les requêtes cross-origin. Cet outil analyse les en-têtes de réponse CORS, peut exécuter une vérification de pré-vérification (OPTIONS) réaliste, et met en évidence les configurations risquées ou défectueuses (comme "*" avec credentials, l'absence de Vary: Origin, ou des allow-methods/allow-headers trop faibles).

Fonctionnalités

  • Inspection des en-têtes CORS pour toute URL publique (Access-Control-* et en-têtes associés).
  • Simulation de pré-vérification facultative (OPTIONS) avec Origin, méthode de requête et en-têtes de requête personnalisés.
  • Suivi des redirections (jusqu'à 10) pour valider le point de terminaison final que les navigateurs atteignent réellement.
  • Vue des en-têtes bruts pour une transparence et un débogage complets.
  • Découvertes + tableau de score avec filtrage "problèmes uniquement" pour un triage rapide.
  • Analyse Vary pour détecter l'absence de Vary: Origin et d'autres pièges CORS liés au cache.
  • Export des résultats en rapports JSON et PDF pour audits, tickets et documentation.
  • Recommandations intégrées pour les problèmes courants : caractère générique+credentials, réflexion de l'Origin, Origin null, absence d'allow-methods/allow-headers, absence de max-age, et allow-headers trop permissifs.

🧭 Comment utiliser for cors-checker

1

Saisissez l'URL cible

Collez le point de terminaison que vous souhaitez tester (par exemple, https://api.example.com/resource).

2

Définissez l'Origin depuis lequel vous testez

Saisissez l'Origin de votre application frontend (schéma + hôte), par exemple, https://app.example.com. C'est la valeur que les navigateurs envoient dans l'en-tête Origin.

3

Choisissez un mode de vérification

Utilisez Auto (recommandé) pour analyser à la fois les en-têtes de réponse et le comportement de pré-vérification. Utilisez Simple request si vous voulez spécifiquement un scénario sans pré-vérification, ou Preflight only pour exécuter des vérifications OPTIONS.

4

Configurez les détails de la pré-vérification (le cas échéant)

Activez "Exécuter la pré-vérification (OPTIONS)" et définissez la Méthode de requête ainsi que les En-têtes de requête (séparés par des virgules) pour simuler le comportement réel de pré-vérification du navigateur (par exemple, authorization, content-type). Activez "Considérer les credentials" si votre cas d'utilisation inclut des cookies ou des en-têtes d'authentification.

5

Examinez les découvertes et exportez

Consultez les découvertes/tableau de score et les détails de l'analyse CORS. Activez "Afficher les en-têtes bruts" lors du débogage. Exportez en JSON/PDF pour partager ou stocker dans des audits.

Spécifications techniques

Modèle de requête

L'outil inspecte les en-têtes CORS pour une URL cible et peut éventuellement effectuer une requête de pré-vérification (OPTIONS) en utilisant l'Origin, la méthode et les en-têtes demandés fournis. Le suivi des redirections est pris en charge.

ParamètreComportementPar défaut
Mode de vérificationAuto, Simple request, ou Preflight uniquementAuto
Exécuter Preflight (OPTIONS)Si activé, effectue une simulation de pré-vérification OPTIONSActivé
OrigineValeur de l'en-tête Origin utilisée pour l'analyse/la pré-vérificationhttps://example.com
Méthode de requêteValeur Access-Control-Request-Method pour la pré-vérificationGET
En-têtes de requêteAccess-Control-Request-Headers (séparés par des virgules) pour la pré-vérificationVide
Suivre les redirectionsSuit la chaîne de redirections jusqu'à l'URL finaleActivé
Redirections maxLimite de redirections pour éviter les boucles10 (plage 0–20)
Délai d'attenteLimite de délai d'attente de la requête15000 ms
User-AgentIdentifie l'agent utilisateur de la requêteEncode64Bot/1.0 (+https://encode64.com)
Réseaux privésBloque l'accès aux plages de réseaux privés pour la sécuritéDésactivé (réseaux privés non autorisés)

En-têtes analysés (ensemble CORS principal)

L'analyseur se concentre sur les en-têtes de réponse et de requête CORS standard utilisés par les navigateurs et les vérifications de pré-vérification.

En-têteObjectif
Access-Control-Allow-OriginQuelle(s) Origine(s) sont autorisées
Access-Control-Allow-CredentialsIndique si les cookies/identifiants sont autorisés (nécessite une origine non générique)
Access-Control-Allow-MethodsMéthodes autorisées pour les requêtes cross-origin (important pour la pré-vérification)
Access-Control-Allow-HeadersEn-têtes autorisés (important pour Authorization et les en-têtes personnalisés)
Access-Control-Expose-HeadersQuels en-têtes sont lisibles par le JS du navigateur
Access-Control-Max-AgeDurée pendant laquelle la pré-vérification peut être mise en cache par le navigateur
VaryVariation de la clé de cache (ex : Vary: Origin) pour éviter l'empoisonnement/mélange du cache
Origin / Access-Control-Request-*Utilisé pour simuler le comportement de pré-vérification

Heuristiques (pièges CORS courants signalés)

Les résultats sont basés sur des vérifications pratiques et axées sur la sécurité pour détecter des configurations CORS cassées ou risquées.

VérificationPourquoi c'est important
Joker + identifiantsAccess-Control-Allow-Origin: * ne peut pas être utilisé avec des identifiants ; les navigateurs bloqueront ou le comportement est dangereux
Vary: Origin manquantSi les réponses varient par Origin mais ne sont pas correctement mises en cache, les caches partagés peuvent mélanger les réponses entre sites
Réflexion de l'OrigineRenvoyer aveuglément l'Origine peut permettre involontairement à des origines non fiables
Avertissements sur l'Origine nulleOrigin: null peut apparaître dans des iframes en bac à sable ou des contextes de fichier ; l'autoriser est souvent risqué
Allow-Methods / Allow-Headers manquantsLa pré-vérification peut échouer si le serveur n'autorise pas explicitement la méthode/les en-têtes
Allow-Headers trop permissifsAutoriser trop d'en-têtes peut augmenter la surface d'attaque
Max-Age manquantLa pré-vérification peut s'exécuter trop fréquemment, ajoutant de la latence
CORS est un mécanisme d'application du navigateur. Les serveurs peuvent toujours être accessibles cross-origin via des clients non-navigateurs ; traitez CORS comme faisant partie d'une posture de sécurité plus large, pas comme le seul contrôle.

Ligne de commande

Utilisez ces commandes pour reproduire le comportement CORS et de pré-vérification depuis votre terminal. Elles sont utiles pour le débogage et la vérification de ce que l'outil rapporte.

macOS / Linux

Vérifier les en-têtes CORS pour une requête normale (simuler une Origin de navigateur)

curl -i -H "Origin: https://example.com" https://api.example.com/resource

Recherchez Access-Control-Allow-Origin, Access-Control-Allow-Credentials, et Vary.

Exécuter une requête OPTIONS de pré-vérification (méthode + en-têtes)

curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/private

La pré-vérification doit renvoyer les Access-Control-Allow-Methods et Access-Control-Allow-Headers corrects pour que le navigateur puisse continuer.

Suivre les redirections tout en vérifiant les en-têtes

curl -iL -H "Origin: https://example.com" https://api.example.com

Utile lorsque les points de terminaison redirigent vers un hôte différent ayant des règles CORS différentes.

Windows (PowerShell)

Inspecter les en-têtes de réponse avec un en-tête Origin

$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.Headers

Affiche les en-têtes Access-Control-* s'ils sont présents.

Si votre frontend utilise des cookies ou une authentification, évitez un CORS trop permissif. Privilégiez une liste d'autorisation explicite d'origines de confiance et incluez Vary: Origin lorsque les réponses diffèrent selon l'origine.

Cas d'utilisation

Déboguer une erreur de navigateur "CORS bloqué" dans le frontend

Lorsqu'un fetch/XHR échoue avec une erreur CORS, vérifiez si le serveur renvoie les en-têtes Access-Control-* requis pour votre origine et votre type de requête.

  • Confirmer qu'Access-Control-Allow-Origin correspond à l'origine de votre application
  • Si vous utilisez des cookies/authentification, vérifiez qu'Access-Control-Allow-Credentials est true (et que l'origine n'est pas un caractère générique)
  • S'assurer que Vary: Origin est présent lors de l'autorisation de plusieurs origines

Valider la pré-vérification pour les en-têtes Authorization / personnalisés

La plupart des appels API authentifiés déclenchent une pré-vérification en raison de l'en-tête Authorization ou de types de contenu non simples. Cet outil aide à s'assurer que les réponses OPTIONS autorisent la méthode et les en-têtes requis.

  • Vérifier qu'Access-Control-Allow-Methods inclut POST/PUT/PATCH/DELETE selon les besoins
  • Vérifier qu'Access-Control-Allow-Headers inclut authorization, content-type et les en-têtes X-* requis
  • Détecter les allow-methods/allow-headers manquants avant le déploiement

Revue de sécurité de la politique CORS

Les mauvaises configurations CORS peuvent exposer involontairement des API privées à des sites malveillants (surtout avec des identifiants). Utilisez les résultats pour détecter les modèles à haut risque.

  • Détecter une origine générique combinée à des identifiants
  • Détecter des modèles d'origine réfléchissants qui autorisent des sites arbitraires
  • Signaler l'autorisation d'Origin: null lorsqu'elle n'est pas intentionnelle

Améliorer les performances en mettant en cache la pré-vérification

Les requêtes de pré-vérification ajoutent des allers-retours et de la latence. Un Max-Age correct peut réduire les vérifications de pré-vérification répétées pour les API stables.

  • Vérifier qu'Access-Control-Max-Age est présent lorsque c'est approprié
  • Réduire les appels OPTIONS répétés pour un trafic API fréquent

❓ Frequently Asked Questions

Qu'est-ce que le CORS en termes simples ?

CORS (Cross-Origin Resource Sharing) est un mécanisme de sécurité des navigateurs qui contrôle si une page web d'une origine (schéma + hôte + port) peut lire les réponses d'une autre origine. Il repose sur des en-têtes de réponse spécifiques Access-Control-*.

Quand un navigateur envoie-t-il une requête de pré-vérification (OPTIONS) ?

Une pré-vérification est envoyée lorsque la requête n'est pas "simple", par exemple lors de l'utilisation de méthodes comme POST avec certains types de contenu ou lors de l'envoi d'en-têtes comme Authorization ou des en-têtes X-* personnalisés. Le navigateur vérifie les autorisations via OPTIONS avant d'envoyer la vraie requête.

Pourquoi "Access-Control-Allow-Origin: *" est-il dangereux avec des identifiants ?

Les navigateurs nécessitent une origine explicite lorsque des identifiants sont impliqués. L'utilisation d'un caractère générique avec des identifiants est invalide pour les requêtes avec identifiants et indique une configuration risquée. Privilégiez une liste d'autorisation explicite d'origines de confiance.

Pourquoi ai-je besoin de Vary: Origin ?

Si votre serveur renvoie différentes valeurs Access-Control-Allow-Origin en fonction de l'origine de la requête, les caches doivent varier selon l'origine pour éviter de servir une réponse destinée à un site à un autre. Vary: Origin aide à prévenir le mélange de caches et les problèmes de sécurité associés.

Le CORS peut-il protéger mon API des clients non-navigateurs ?

Non. Le CORS est appliqué par les navigateurs. Les scripts exécutés en dehors d'un navigateur (serveurs, curl, applications mobiles) peuvent appeler votre API indépendamment du CORS. Utilisez l'authentification, l'autorisation et la limitation du débit pour un véritable contrôle d'accès.

Que dois-je mettre dans "En-têtes de requête" lors du test du pré-vol ?

Listez les en-têtes que votre frontend enverra, séparés par des virgules (ex. : authorization, content-type, x-request-id). Cela simule Access-Control-Request-Headers et vérifie si le serveur les autorise.

Est-il sûr de coller des URL ici ?

L'outil effectue des requêtes côté serveur vers l'URL fournie et bloque les cibles de réseau privé. Évitez d'inclure des secrets dans les URL (comme des jetons dans les chaînes de requête) et privilégiez les points de terminaison publics que vous connaissez.

Pro Tips

Security Tip

Privilégiez une liste d'autorisation d'origines de confiance plutôt que de refléter n'importe quelle origine. Traitez le CORS comme une configuration sensible pour la sécurité.

Security Tip

Si vous utilisez des cookies/auth, définissez Access-Control-Allow-Credentials: true ET renvoyez une origine explicite (pas "*").

Security Tip

Ajoutez Vary: Origin lorsque vous autorisez plusieurs origines ou sélectionnez dynamiquement l'origine autorisée.

Performance Tip

Ajoutez une valeur Access-Control-Max-Age raisonnable pour réduire la latence du pré-vol pour les API stables.

Best Practice

Testez à la fois le chemin de pré-vol et la requête réelle ; certaines configurations renvoient des en-têtes corrects pour GET mais échouent pour OPTIONS.

CI Tip

Exportez des rapports JSON et conservez-les avec les modifications de configuration de la passerelle API pour détecter rapidement les régressions.

Additional Resources

Other Tools