3. Il campo Repr-Digest
Il campo HTTP Repr-Digest può essere utilizzato nelle richieste e nelle risposte per comunicare digest calcolati utilizzando un algoritmo di hashing applicato all'intera selezione di dati di rappresentazione (vedere la Sezione 8.1 di [HTTP]).
Le rappresentazioni tengono conto dell'effetto della semantica HTTP sui messaggi. Ad esempio, il contenuto può essere influenzato da richieste di intervallo o metodi, come HEAD, mentre il modo in cui il contenuto viene trasferito "via cavo" dipende da altre trasformazioni (ad esempio, codifiche di trasferimento per HTTP/1.1; vedere la Sezione 6.1 di [HTTP/1.1]). Per aiutare a illustrare i concetti di rappresentazione HTTP, vengono forniti diversi esempi nell'Appendice A.
Quando un messaggio non ha dati di rappresentazione, è comunque possibile affermare che non sono stati inviati dati di rappresentazione calcolando il digest su una stringa vuota (vedere la Sezione 6.3).
Repr-Digest è un Dizionario (vedere la Sezione 3.2 di [STRUCTURED-FIELDS]), in cui ciascuno:
-
chiave trasmette l'algoritmo di hashing (vedere la Sezione 5) utilizzato per calcolare il digest;
-
valore è una sequenza di byte che trasmette una versione codificata dell'output di byte prodotto dal calcolo del digest.
Ad esempio:
NOTA: a capo con '' secondo RFC 8792
Repr-Digest: \
sha-512=:YMAam51Jz/jOATT6/zvHrLVgOYTGFy1d6GJiOHTohq4yP+pgk4vf2aCs\
yRZOtw8MjkM7iw7yZ/WkppmM44T3qg==:
Il tipo Dizionario può essere utilizzato per allegare più digest calcolati utilizzando diversi algoritmi di hashing al fine di supportare una popolazione di endpoint con capacità diverse o in evoluzione. Un tale approccio potrebbe supportare le transizioni lontano da algoritmi più deboli (vedere la Sezione 6.6).
NOTA: a capo con '' secondo RFC 8792
Repr-Digest: \
sha-256=:d435Qo+nKZ+gLcUHn7GQtQ72hiBVAgqoLsZnZPiTGPk=:,\
sha-512=:YMAam51Jz/jOATT6/zvHrLVgOYTGFy1d6GJiOHTohq4yP+pgk4vf2aCs\
yRZOtw8MjkM7iw7yZ/WkppmM44T3qg==:
Un destinatario PUÒ ignorare uno o tutti i digest. Il comportamento specifico dell'applicazione o la politica locale POSSONO impostare vincoli aggiuntivi sulle pratiche di elaborazione e convalida dei digest trasmessi. Le considerazioni sulla sicurezza coprono alcune delle questioni relative all'ignorare i digest (vedere la Sezione 6.6) e alla convalida di più digest (vedere la Sezione 6.7).
Un mittente PUÒ inviare un digest senza sapere se il destinatario supporta un determinato algoritmo di hashing. Un mittente PUÒ inviare un digest se sa che il destinatario lo ignorerà.
Repr-Digest può essere inviato in una sezione trailer. In questo caso, Repr-Digest PUÒ essere unito alla sezione intestazione; vedere la Sezione 6.5.1 di [HTTP].
3.1. Utilizzo di Repr-Digest nelle richieste che cambiano stato
Quando la rappresentazione racchiusa in una richiesta che cambia stato non descrive la risorsa di destinazione, il digest della rappresentazione DEVE essere calcolato sui dati di rappresentazione. Questa è l'unica scelta possibile perché il digest della rappresentazione richiede metadati di rappresentazione completi (vedere la Sezione 3).
Nelle risposte,
-
se la rappresentazione descrive lo stato della richiesta, Repr-Digest DEVE essere calcolato sulla rappresentazione racchiusa (vedere l'Appendice B.8);
-
se c'è una risorsa referenziata, Repr-Digest DEVE essere calcolato sulla rappresentazione selezionata della risorsa referenziata anche se questa è diversa dalla risorsa di destinazione. Ciò potrebbe o meno comportare il calcolo di Repr-Digest sulla rappresentazione racchiusa.
Quest'ultimo caso viene eseguito secondo la semantica HTTP del metodo dato, ad esempio, utilizzando il campo di intestazione Content-Location (vedere la Sezione 8.7 di [HTTP]). Al contrario, il campo di intestazione Location non influenza Repr-Digest perché non sono metadati di rappresentazione.
Ad esempio, nelle richieste PATCH, il digest della rappresentazione sarà calcolato sul documento patch perché i metadati di rappresentazione si riferiscono al documento patch e non alla risorsa di destinazione (vedere la Sezione 2 di [PATCH]). Nelle risposte, invece, il digest della rappresentazione sarà calcolato sulla rappresentazione selezionata della risorsa con patch.
3.2. Repr-Digest e Content-Location nelle risposte
Quando un metodo che cambia stato restituisce il campo di intestazione Content-Location, la rappresentazione racchiusa si riferisce alla risorsa identificata dal suo valore e Repr-Digest viene calcolato di conseguenza. Un esempio è fornito nell'Appendice B.7.