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

Module 29 / 40 · 90 min

29. Vary et variantes de représentation

Faire correspondre clé HTTP et dimensions réellement utilisées.

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

Vary indique des champs de requête ayant contribué au choix de la représentation. Un cache qui réutilise une réponse doit tenir compte des variantes annoncées dans le cadre de son contrat. La langue, certains encodages ou une politique CORS peuvent modifier une réponse. Un champ absent de Vary alors qu’il change le résultat peut conduire à une variante incorrecte. Une liste trop large peut au contraire réduire fortement l’efficacité du cache.

Raisonner et vérifier

N’ajoutez pas mécaniquement tous les champs. Partez du code qui choisit le résultat et des règles du cache intermédiaire. Vary ne remplace pas une politique de confidentialité : annoncer une variation sur Cookie ne suffit pas, à lui seul, à rendre sûre une réponse personnelle publique. Testez variantes, valeur absente, ordre des demandes et invalidation après changement de politique.

Sélection

Vary indique des champs de requête influençant la sélection. La directive participe à la sélection des variantes. Vary nomme des champs de requête qui influencent le choix de représentation. Ce n’est pas une liste de droits ; il aide le cache à distinguer les demandes que le serveur traite différemment.

Erreur fréquente à comprendre

Vary décrit uniquement la taille du corps de réponse.

La directive participe à la sélection des variantes.

Langue

Une réponse variant par langue peut annoncer cette dimension. La séparation de variantes n’est pas un chiffrement. Une réponse calculée selon Accept-Language peut annoncer cette dimension. Vérifiez deux langues sur la même URL avec cache chaud pour démontrer que le contenu correspondant est choisi.

Erreur fréquente à comprendre

Vary Accept-Language chiffre la langue de l’utilisateur.

La séparation de variantes n’est pas un chiffrement.

Origin

Une politique différente selon Origin peut demander Vary Origin. Le cache doit tenir compte de la variation réelle. Si Access-Control-Allow-Origin varie selon l’origine reçue, le cache doit respecter cette variation pertinente. Sans séparation appropriée, une réponse préparée pour un portail peut être réutilisée dans un autre contexte.

Erreur fréquente à comprendre

Réfléchir Origin ne nécessite jamais une revue de cache.

Le cache doit tenir compte de la variation réelle.

Pas une permission

Vary ne constitue pas seul une autorisation. La sélection de représentation ne vérifie pas la permission. Vary: Cookie ne dit pas qu’un contenu personnel est admissible dans tout cache partagé. Il faut une politique de confidentialité et de stockage complète, avec dimensions et accès effectivement maîtrisés.

Erreur fréquente à comprendre

Vary Cookie valide les droits métier de chaque lecteur.

La sélection de représentation ne vérifie pas la permission.

Dimension oubliée

Une dimension oubliée peut mélanger des réponses. Les dimensions pertinentes doivent être exactes. Un tenant absent de la clé peut recevoir le contenu d’un autre. Testez précisément une seule différence entre les demandes afin d’identifier la dimension que la sélection doit préserver.

Erreur fréquente à comprendre

La présence d’un Vary quelconque garantit toutes les variantes.

Les dimensions pertinentes doivent être exactes.

Cardinalité

Des dimensions inutiles peuvent réduire l’efficacité du cache. Une clé trop fragmentée réduit la réutilisation. Ajouter inutilement des champs très variables peut multiplier les entrées et réduire les hits. Choisissez les dimensions requises par la représentation sans supprimer celles qui assurent l’isolation nécessaire.

Erreur fréquente à comprendre

Ajouter tous les champs améliore toujours le taux de hit.

Une clé trop fragmentée réduit la réutilisation.

Comparaison contrôlée

Les tests doivent comparer des requêtes différant sur une dimension. Il faut provoquer la variation à vérifier. Gardez méthode et chemin identiques puis changez un seul header pertinent. Vérifiez contenu et métadonnées afin de distinguer une mauvaise sélection de variante d’un autre changement de comportement.

Erreur fréquente à comprendre

Deux requêtes identiques prouvent la séparation des langues.

Il faut provoquer la variation à vérifier.

Intermédiaires

Les intermédiaires doivent respecter le contrat déployé. Les caches métier peuvent utiliser d’autres mécanismes. Les caches réellement déployés doivent comprendre et respecter la stratégie retenue. Une configuration d’application correcte ne suffit pas si le CDN utilise une clé personnalisée incompatible.

Erreur fréquente à comprendre

Tous les caches internes suivent automatiquement Vary.

Les caches métier peuvent utiliser d’autres mécanismes.

Confidentialité complète

La confidentialité demande une politique complète. Le cache privé ou non stockable peut rester nécessaire. Définissez d’abord si la réponse peut être stockée et partagée, puis comment ses variantes sont distinguées. Une clé très détaillée ne justifie pas la conservation de données qui doivent rester non stockées.

Erreur fréquente à comprendre

Vary seul rend toute donnée personnelle partageable.

Le cache privé ou non stockable peut rester nécessaire.

Normalisation

Une normalisation doit préserver la signification de la dimension. Une normalisation excessive peut fusionner des représentations distinctes. Normaliser une langue ou une origine peut améliorer la sélection seulement si la signification reste préservée. Une simplification qui fusionne des contextes différents peut recréer une fuite ou servir une mauvaise politique.

Erreur fréquente à comprendre

On peut supprimer toute valeur de clé sans effet.

Une normalisation excessive peut fusionner des représentations distinctes.

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

Access-Control-Allow-Origin: https://portal-a.example.test
Vary: Accept-Language

Cache partagé ; même URL utilisée par plusieurs origines admises.

La réponse varie par origine mais Vary ne montre que la langue dans ce cache partagé. Examinez la stratégie complète et ajoutez la dimension manquante lorsque ce contrat l’exige. Rejouez deux origines admises sur la même URL et vérifiez leur header de partage respectif.

Le cache doit distinguer la variation effectivement annoncée par origine. Un secret ne doit pas être exposé pour construire la politique. Le statut seul ne sépare pas les variantes. Le visuel ne définit pas la clé HTTP.

Travail pratique : Servez deux variantes de langue sur un endpoint de laboratoire cachable puis inversez l’ordre des demandes.

Critères de correction : Vérifiez que chaque appelant reçoit la représentation attendue. Comparez clé effective et champs annoncés, puis testez une origine absente ou refusée. Retirez les variations sans effet plutôt que masquer une conception de cache incohérente.

Exemple commenté

Vary: Accept-Language, Origin

Ce fragment suppose que ces dimensions influencent effectivement la réponse servie et qu’une politique de cache adaptée existe déjà.

Exercice de mise en pratique

Servez deux variantes de langue sur un endpoint de laboratoire cachable puis inversez l’ordre des demandes.

Voir une proposition de correction

Vérifiez que chaque appelant reçoit la représentation attendue. Comparez clé effective et champs annoncés, puis testez une origine absente ou refusée. Retirez les variations sans effet plutôt que masquer une conception de cache incohérente.

Points de vérification

  • Lister les dimensions réelles.
  • Tester l’ordre des demandes.
  • Ne pas confondre Vary et contrôle d’accès.

Contrôle de connaissances

Cours associé : 29. Vary et variantes de représentation ↗
Que décrit Vary ?

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 →