Comprendre le mécanisme
CORS fournit un protocole par lequel le serveur indique au navigateur quelles lectures interorigine sont permises. Il ne constitue pas une authentification de l’utilisateur ni une barrière universelle contre un client HTTP autonome. Réfléchir automatiquement toute valeur Origin reçue peut accorder une lecture à un appelant non prévu. Les règles doivent distinguer ressources publiques et réponses liées à une identité.
Raisonner et vérifier
Utilisez une liste d’origines complète et exacte pour les interfaces connues. Lorsque la réponse de politique varie selon Origin et peut être mise en cache, prenez en compte cette variation. Évaluez aussi les méthodes et champs permis, sans les élargir pour faire disparaître une erreur de console. Une API non accessible au navigateur d’un tiers peut rester directement joignable : elle garde ses contrôles d’accès.
Partage navigateur
CORS organise un partage de réponse avec le navigateur. La politique de lecture ne vérifie pas l’identité. Access-Control-Allow-Origin décrit un partage de réponse avec une origine de navigateur. Il ne bloque pas automatiquement un appel réseau direct effectué par un autre programme ou un serveur.
Understand this common mistake
CORS authentifie tous les clients de l’API.
La politique de lecture ne vérifie pas l’identité.
Admission explicite
Une liste d’origines doit être explicite et contrôlée. La valeur reçue n’établit pas sa légitimité. Comparez Origin à une liste maîtrisée et normalisée selon votre contrat. Refléter toute valeur revient à annoncer une confiance très large, particulièrement dangereuse pour des réponses personnelles.
Understand this common mistake
Réfléchir toute origine reçue constitue une liste de confiance.
La valeur reçue n’établit pas sa légitimité.
Client autonome
Un client direct peut appeler l’API sans appliquer CORS. Les contrôles serveur demeurent indispensables. Un client hors navigateur n’a pas à appliquer CORS comme le ferait fetch dans une page. Exigez credentials et permissions indépendamment des headers CORS renvoyés par l’API.
Understand this common mistake
Un refus CORS interdit tout appel par curl.
Les contrôles serveur demeurent indispensables.
Méthode et droit
Les méthodes admises ne donnent pas de permissions métier. La déclaration protocolaire ne crée pas ces droits. Autoriser POST dans le partage CORS ne donne pas à Alice le droit de modifier la réservation de Bob. Le serveur doit encore appliquer la décision métier après authentification.
Understand this common mistake
Access-Control-Allow-Methods accorde la propriété des ressources.
La déclaration protocolaire ne crée pas ces droits.
Origin absent
Un Origin absent nécessite une politique adaptée au type de client. Les clients non navigateur peuvent suivre un autre contrat. Certains clients légitimes peuvent ne pas envoyer Origin. Définissez une politique selon vos types de clients sans transformer son absence en preuve d’authenticité ou en accès privilégié.
Understand this common mistake
Tout client sans Origin est automatiquement malveillant.
Les clients non navigateur peuvent suivre un autre contrat.
Test navigateur
Une origine refusée doit être testée dans le navigateur. Le trajet complet et le navigateur participent au résultat. Vérifiez une origine admise et une origine refusée avec un vrai navigateur. Un test de headers seul ne démontre pas la lisibilité effective de la réponse dans le contexte considéré.
Understand this common mistake
Un simple test de chaîne prouve l’exposition finale au script.
Le trajet complet et le navigateur participent au résultat.
Credentials
Les credentials imposent des contraintes de partage spécifiques. L’origine explicite est requise dans ce cas de partage. Une réponse personnelle avec credentials demande une origine explicitement admise et les règles de partage compatibles. Le joker ne doit pas servir de raccourci à une politique d’identités automatiques.
Understand this common mistake
Le joker d’origine convient à toutes les réponses avec credentials.
L’origine explicite est requise dans ce cas de partage.
Erreurs cohérentes
Les erreurs d’API peuvent aussi nécessiter des en-têtes cohérents. Les réponses d’erreur participent à l’expérience et au contrat. Le frontend doit pouvoir traiter les erreurs que le contrat choisit de partager. Vérifiez les headers sur réponses d’échec aussi, sans ouvrir plus largement les données pour résoudre un simple message console.
Understand this common mistake
Seules les réponses 200 influencent le parcours CORS.
Les réponses d’erreur participent à l’expérience et au contrat.
Variation et cache
La clé de cache doit respecter les variations pertinentes d’origine. Un cache peut servir la mauvaise politique sans dimension adéquate. Si la réponse varie selon Origin, sa stratégie de cache doit respecter cette dimension. Sinon un intermédiaire peut réutiliser une réponse ou ses permissions pour une autre origine.
Understand this common mistake
Une réponse différente par origine se partage toujours sans variation.
Un cache peut servir la mauvaise politique sans dimension adéquate.
Droits après identité
L’autorisation sur l’objet doit suivre l’authentification. La politique CORS ne supprime pas l’isolation métier. Un cookie ou bearer token valide identifie un acteur selon son mécanisme. Vérifiez ensuite l’accès à la ressource ; CORS ne porte aucune preuve de propriété métier.
Understand this common mistake
Une origine admise peut lire tous les comptes.
La politique CORS ne supprime pas l’isolation métier.
Atelier guidé : lire, expliquer et vérifier le code
Access-Control-Allow-Origin: https://portal.example.test
Client considéré : script HTTP serveur, hors navigateur. Le client considéré est un script serveur et non une page de navigateur. Le header CORS ne constitue donc pas sa barrière d’admission réseau. Ajoutez une authentification et un contrôle de ressource effectifs, puis utilisez un navigateur pour vérifier séparément la politique de partage annoncée.
CORS définit un partage pour le navigateur, pas toute admission réseau. Un client direct ne suit pas nécessairement cette politique. Un nom d’origine ne définit pas les permissions. Le modèle du navigateur n’est pas celui de tout client serveur.
Travail pratique : Écrivez une matrice CORS pour une ressource publique et une ressource personnelle, avec une origine admise et une origine refusée.
Critères de correction : Vérifiez les réponses réelles et le comportement du navigateur. Répétez avec un client HTTP sans politique navigateur pour confirmer que l’autorisation métier reste appliquée indépendamment des champs CORS.
Worked example
Access-Control-Allow-Origin: https://app.example.test
Vary: Origin
Politique illustrative pour une origine explicitement autorisée.Le serveur ne doit émettre cette autorisation que lorsque la demande correspond à sa politique ; elle ne remplace pas le contrôle de ressource.
Practical exercise
Écrivez une matrice CORS pour une ressource publique et une ressource personnelle, avec une origine admise et une origine refusée.
View a suggested solution
Vérifiez les réponses réelles et le comportement du navigateur. Répétez avec un client HTTP sans politique navigateur pour confirmer que l’autorisation métier reste appliquée indépendamment des champs CORS.
Verification checklist
- Liste d’origines explicite.
- Pas de réflexion libre.
- CORS n’authentifie pas un acteur.
Knowledge check
Related lesson: 13. CORS : autoriser une lecture sans ouvrir les droits ↗Module validation
101 questions, local practice target of 75%. Suggested duration of 150 minutes, with no enforced deadline. Questions and choices are shuffled; corrections appear after submission. The quick lesson check and the final course exam remain separate exercises.
Start or resume the 101 questions →This records your own progress and does not certify mastery. Complete the exercise before moving on.
