6. Corps du message (Message Body)
Le corps du message (si présent) d'un message HTTP est utilisé pour transporter le contenu (section 6.4 de [HTTP]) pour la requête ou la réponse. Le corps du message est identique au contenu à moins qu'un codage de transfert ait été appliqué, comme décrit dans la section 6.1.
message-body = *OCTET
Les règles de détermination de la présence et de la longueur d'un corps de message diffèrent pour les requêtes et les réponses.
6.1. Transfer-Encoding
Le champ d'en-tête Transfer-Encoding répertorie les noms des codages de transfert appliqués au contenu afin de former le corps du message.
Transfer-Encoding = #transfer-coding
Transfer-Encoding peut être envoyé dans une requête si la version de protocole de la requête est 1.1 ou ultérieure. Transfer-Encoding DOIT être envoyé dans une réponse si la longueur du corps du message ne peut pas être déterminée autrement.
6.2. Content-Length
Le champ d'en-tête Content-Length fournit la taille décimale attendue du corps du message en octets.
Content-Length = 1*DIGIT
6.3. Longueur du corps du message (Message Body Length)
La longueur d'un corps de message est déterminée par l'un des éléments suivants (dans l'ordre de priorité) :
-
Tout code d'état de réponse 1xx (Informationnel), 204 (No Content) ou 304 (Not Modified) est toujours suivi d'une ligne vide.
-
Tout code d'état de réponse 2xx (Successful) à une requête CONNECT est toujours suivi d'une ligne vide.
-
Si un champ d'en-tête Transfer-Encoding est présent et que le codage de transfert "chunked" est le codage final, la longueur est déterminée par la lecture et le décodage du corps de message par morceaux.
-
Si un champ d'en-tête Content-Length est présent, sa valeur décimale en octets représente à la fois la longueur du contenu et la longueur du corps du message.