← HTTP — sécurité avancée, 40 leçons de cours

Module 14 / 40 · 90 min

14. Preflight : intention annoncée et demande réelle

Tester les deux étapes du protocole CORS.

Votre progression apparaîtra ici lorsque JavaScript est actif.

La progression et le meilleur score sont enregistrés uniquement dans ce navigateur. Aucun compte n’est nécessaire ; effacer les données du navigateur les supprime. Les durées de modules sont indicatives et incluent les exercices.

Comprendre le mécanisme

Une pré-vérification CORS annonce au serveur la méthode et certains champs d’une demande envisagée. Elle utilise OPTIONS dans le cadre prévu par le navigateur. La réponse permet ou refuse cette intention selon la politique. Cette étape ne doit pas exécuter l’opération métier annoncée ni être assimilée à la demande authentifiée finale. Une réponse positive n’empêche pas le serveur de refuser ensuite une demande réelle invalide ou non autorisée.

Raisonner et vérifier

Vérifiez les deux échanges dans les outils réseau. Le cache de pré-vérification suit un mécanisme distinct du cache ordinaire d’une représentation ; une modification de politique peut donc sembler tarder. Documentez la durée et les limites imposées par les clients. N’autorisez pas toutes les méthodes simplement parce que le navigateur réclame une pré-vérification.

OPTIONS préalable

Le navigateur peut envoyer OPTIONS avant la requête réelle. Le précontrôle ne doit pas produire cet effet. Le navigateur peut annoncer méthode et headers envisagés avant la demande réelle. Le serveur répond selon sa politique de partage, mais aucune mutation métier ne devrait être exécutée pendant cette étape de négociation.

Erreur fréquente à comprendre

Tout OPTIONS exécute d’abord la mutation métier.

Le précontrôle ne doit pas produire cet effet.

Sans preflight

Certaines requêtes ne déclenchent pas de preflight. Le déclenchement dépend notamment de la méthode et des champs. Certaines demandes remplissent les conditions d’un envoi sans pré-vérification. Ne fondez donc pas la protection d’une mutation sur l’idée que tout appel externe serait bloqué par un OPTIONS préalable.

Erreur fréquente à comprendre

Toute requête inter-origines commence nécessairement par OPTIONS.

Le déclenchement dépend notamment de la méthode et des champs.

Contrôles réels

La requête réelle doit conserver ses contrôles. Il ne vérifie pas la propriété métier de chaque objet. Après un preflight accepté, la demande réelle doit encore valider données, identité et autorisation. Une permission de communication n’est pas une permission de modifier une ressource précise.

Erreur fréquente à comprendre

Un preflight accepté suffit pour toute autorisation future.

Il ne vérifie pas la propriété métier de chaque objet.

Cache spécifique

Le cache de preflight possède un usage spécifique. Ses informations servent au contrôle de partage navigateur. Le navigateur peut mémoriser une réponse de preflight selon sa politique et la durée annoncée. Une modification serveur peut donc ne pas provoquer immédiatement un nouveau OPTIONS dans le même contexte.

Erreur fréquente à comprendre

Le cache OPTIONS est identique à toute réponse métier.

Ses informations servent au contrôle de partage navigateur.

Headers demandés

Le serveur doit examiner les en-têtes demandés selon son contrat. Les capacités doivent rester dans la politique définie. Examinez Access-Control-Request-Headers selon le contrat plutôt que recopier sans contrôle. L’admission d’un header ne prouve pas la fiabilité de sa valeur dans la demande réelle.

Erreur fréquente à comprendre

Tout nom demandé doit être accepté automatiquement.

Les capacités doivent rester dans la politique définie.

Refus préalable

Un preflight refusé peut empêcher l’envoi réel par le navigateur. Le refus peut être purement protocolaire. Un preflight refusé peut empêcher le navigateur d’émettre la demande réelle concernée. Vérifiez les journaux pour distinguer ce cas d’une demande envoyée dont seule la lecture de réponse est bloquée.

Erreur fréquente à comprendre

Un preflight refusé prouve une panne de base de données.

Le refus peut être purement protocolaire.

OPTIONS réussi

Un succès OPTIONS ne garantit pas le succès métier. Les deux échanges ont des responsabilités différentes. Le POST peut être refusé pour manque de droit après un OPTIONS réussi. Ce comportement est cohérent : les deux réponses portent sur des décisions différentes et doivent être testées séparément.

Erreur fréquente à comprendre

Le statut 204 OPTIONS valide le contenu du prochain paiement.

Les deux échanges ont des responsabilités différentes.

Méthode serveur

Les méthodes incorrectes doivent être refusées au serveur. Un client direct n’est pas limité par l’annonce navigateur. Le routeur doit refuser une méthode hors contrat indépendamment du navigateur. Un client autonome peut envoyer directement la demande sans passer par la séquence de preflight attendue.

Erreur fréquente à comprendre

La liste annoncée suffit à empêcher tout client direct.

Un client direct n’est pas limité par l’annonce navigateur.

Credentials du flux

Les credentials du flux réel demandent une validation propre. Le token doit encore être validé lors de l’opération. Les règles de cookies et d’authentification du flux réel restent applicables. Un OPTIONS ne démontre ni l’envoi d’un cookie ni la validité d’une session au moment du POST.

Erreur fréquente à comprendre

Le précontrôle remplace la vérification du token réel.

Le token doit encore être validé lors de l’opération.

Suite complète

Tester OPTIONS seul ne couvre pas la réponse réelle. Le navigateur applique aussi des règles à la réponse réelle. Testez OPTIONS puis réponse réelle, erreurs comprises. Un test qui vérifie seulement le 204 initial peut manquer un header absent ou une autorisation incorrecte sur l’opération réellement demandée.

Erreur fréquente à comprendre

La présence d’un OPTIONS vert prouve la lecture finale du script.

Le navigateur applique aussi des règles à la réponse réelle.

Atelier guidé : lire, expliquer et vérifier le code

OPTIONS /lab/orders → 204
POST /lab/orders → 403

Le POST est refusé par une règle d’autorisation métier.

Le 204 d’OPTIONS décrit une étape de communication ; le 403 du POST exprime ensuite une décision de droit métier. Les deux résultats peuvent être corrects ensemble. Vérifiez que le POST interdit ne modifie rien et qu’un acteur autorisé peut réussir le même parcours.

Il ne donne pas ce privilège. Le précontrôle ne doit pas produire cet effet. Le contrôle d’objet reste nécessaire. Le partage protocolaire et le droit d’action sont deux décisions.

Travail pratique : Capturez une pré-vérification puis le POST réel de votre laboratoire. Changez ensuite la politique et observez la mise en cache.

Critères de correction : Comparez les journaux : aucun effet métier sur OPTIONS, validation et droits sur POST. Utilisez un contexte de navigateur neuf pour distinguer une règle active d’une permission encore mémorisée.

Exemple commenté

OPTIONS /lab/reservations
Origin: https://app.example.test
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type

Cette requête annonce un futur POST, elle ne porte pas à elle seule la réservation à traiter. Le POST réel reste soumis au contrat complet.

Exercice de mise en pratique

Capturez une pré-vérification puis le POST réel de votre laboratoire. Changez ensuite la politique et observez la mise en cache.

Voir une proposition de correction

Comparez les journaux : aucun effet métier sur OPTIONS, validation et droits sur POST. Utilisez un contexte de navigateur neuf pour distinguer une règle active d’une permission encore mémorisée.

Points de vérification

  • Aucun effet métier sur le preflight.
  • Tester la demande réelle.
  • Distinguer les caches.

Contrôle de connaissances

Cours associé : 14. Preflight : intention annoncée et demande réelle ↗
Une pré-vérification positive autorise-t-elle automatiquement la mutation métier ?

Documentation de référence ↗

Validation du module

101 questions, objectif pédagogique de 75 %. Durée conseillée de 150 minutes, sans limite imposée. Les questions et les choix sont mélangés ; le corrigé apparaît après validation. Le contrôle rapide de la leçon et l’examen final du cours restent des exercices distincts.

Commencer ou reprendre les 101 questions →