1.3. Trasformazioni dei messaggi HTTP (HTTP Message Transformations)
1.3. Trasformazioni dei messaggi HTTP (HTTP Message Transformations)
Come già accennato, HTTP consente esplicitamente, e in alcuni casi richiede, che le implementazioni trasformino i messaggi in vari modi. Le implementazioni DEVONO tollerare molte di queste trasformazioni. Di seguito è riportato un elenco non normativo e non esaustivo di trasformazioni che possono verificarsi sotto HTTP, fornito come contesto:
-
Riordinamento di campi con nomi di campo diversi (Sezione 5.3 di [HTTP]).
-
Unione di campi con lo stesso nome di campo (Sezione 5.2 di [HTTP]).
-
Rimozione dei campi elencati nel campo di intestazione Connection (Sezione 7.6.1 di [HTTP]).
-
Aggiunta di campi che indicano opzioni di controllo (Sezione 7.6.1 di [HTTP]).
-
Aggiunta o rimozione di una transfer coding (Sezione 7.7 di [HTTP]).
-
Aggiunta di campi come Via (Sezione 7.6.3 di [HTTP]) e Forwarded (Sezione 4 di [RFC7239]).
-
Conversione tra diverse versioni di HTTP (ad esempio HTTP/1.x verso HTTP/2, o viceversa).
-
Variazioni di maiuscole/minuscole (ad esempio "Origin" in "origin") di qualsiasi componente insensibile alle maiuscole, come nomi di campo, schema dell'URI della richiesta o host.
-
Modifiche all'obiettivo della richiesta (request target) e all'autorità che, applicate insieme, non comportano un cambiamento dell'URI di destinazione del messaggio, come definito nella Sezione 7.1 di [HTTP].
Inoltre, esistono trasformazioni deprecate o altrimenti non consentite ma che possono ancora verificarsi sul campo. Queste trasformazioni possono comunque essere gestite senza rompere la firma; includono azioni come:
-
Uso, aggiunta o rimozione di spazi bianchi iniziali o finali in un valore di campo.
-
Uso, aggiunta o rimozione di obs-fold nei valori di campo (Sezione 5.2 di [HTTP/1.1]).
Si possono identificare questi tipi di trasformazioni come trasformazioni che non dovrebbero impedire la verifica della firma, anche quando eseguite su componenti del messaggio coperti dalla firma. Inoltre, tutte le modifiche ai componenti non coperti dalla firma non dovrebbero impedire la verifica della firma.
Alcuni esempi di questo tipo di trasformazioni, e l'effetto che hanno sulla firma del messaggio, si trovano nell'Appendice B.4.
Altre trasformazioni, come l'analisi e la riserializzazione dei valori di campo di un componente coperto o la modifica del valore di un componente derivato, possono far sì che una firma non si convalidi più rispetto al messaggio di destinazione. Le applicazioni di questa specifica devono fare attenzione a garantire che le trasformazioni attese dall'applicazione siano adeguatamente gestite dalla scelta dei componenti coperti.