1.3. Transformations des messages HTTP (HTTP Message Transformations)
1.3. Transformations des messages HTTP
Comme indiqué précédemment, HTTP autorise explicitement, et dans certains cas exige, que les implémentations transforment les messages de diverses façons. Les implémentations doivent tolérer nombre de ces transformations. Ce qui suit est une liste non normative et non exhaustive de transformations pouvant survenir sous HTTP, fournie à titre de contexte:
-
Réordonnancement des champs portant des noms différents (Section 5.3 de [HTTP]).
-
Fusion des champs portant le même nom (Section 5.2 de [HTTP]).
-
Suppression des champs énumérés dans le champ d'en-tête Connection (Section 7.6.1 de [HTTP]).
-
Ajout de champs indiquant des options de contrôle (Section 7.6.1 de [HTTP]).
-
Ajout ou suppression d'un codage de transfert (Section 7.7 de [HTTP]).
-
Ajout de champs tels que Via (Section 7.6.3 de [HTTP]) et Forwarded (Section 4 de [RFC7239]).
-
Conversion entre différentes versions de HTTP (par ex. HTTP/1.x vers HTTP/2, ou l'inverse).
-
Changement de casse (par ex. « Origin » vers « origin ») pour tout élément insensible à la casse, tels que les noms de champs, le schéma de l'URI de requête ou l'hôte.
-
Modifications de la cible de requête et de l'autorité qui, appliquées ensemble, ne modifient pas l'URI cible du message, telle que définie à la Section 7.1 de [HTTP].
Il existe en outre des transformations dépréciées ou interdites mais encore possibles sur le terrain. Elles peuvent être gérées sans rompre la signature; elles comprennent notamment:
-
Usage, ajout ou suppression d'espaces en tête ou en fin dans une valeur de champ.
-
Usage, ajout ou suppression d'obs-fold dans les valeurs de champ (Section 5.2 de [HTTP/1.1]).
On peut qualifier ces transformations de transformations qui ne devraient pas empêcher la vérification de la signature, même lorsqu'elles portent sur des composants de message couverts par la signature. De plus, toute modification de composants non couverts par la signature ne devrait pas empêcher la vérification de la signature.
Des exemples de ce type de transformations et de leur effet sur la signature de message figurent à l'Annexe B.4.
D'autres transformations, comme l'analyse et la reserialisation des valeurs de champ d'un composant couvert ou la modification de la valeur d'un composant dérivé, peuvent faire qu'une signature ne valide plus par rapport au message cible. Les applications de cette spécification doivent veiller à ce que les transformations attendues par l'application soient correctement prises en charge par le choix des composants couverts.