7. Entity (Entité)
Les messages de requête et de réponse peuvent (MAY) transférer une entité si cela n'est pas limité par la méthode de requête ou le code d'état de réponse. Une entité se compose de champs d'en-tête d'entité (entity header field) et d'un corps d'entité (entity body), bien que certaines réponses n'incluent que les en-têtes d'entité.
Dans cette section, l'expéditeur (sender) et le destinataire (receiver) font tous deux référence au client ou au serveur, selon qui envoie et qui reçoit l'entité.
7.1 Entity Header Fields (Champs d'En-tête d'Entité)
Les champs d'en-tête d'entité définissent des méta-informations sur le corps de l'entité ou, si aucun corps n'est présent, sur la ressource identifiée par la requête. Certaines de ces méta-informations sont optionnelles (OPTIONAL) ; certaines peuvent être requises (REQUIRED) par des parties de cette spécification.
entity-header = Allow ; Section 14.7
| Content-Encoding ; Section 14.11
| Content-Language ; Section 14.12
| Content-Length ; Section 14.13
| Content-Location ; Section 14.14
| Content-MD5 ; Section 14.15
| Content-Range ; Section 14.16
| Content-Type ; Section 14.17
| Expires ; Section 14.21
| Last-Modified ; Section 14.29
| extension-header
extension-header = message-header
Le mécanisme d'en-tête d'extension permet de définir des champs d'en-tête d'entité supplémentaires sans modifier le protocole, mais on ne peut pas supposer que le destinataire peut reconnaître ces champs. Les destinataires devraient (SHOULD) ignorer les champs d'en-tête non reconnus et les proxies transparents doivent (MUST) les transférer.
7.2 Entity Body (Corps d'Entité)
Le corps de l'entité (s'il y en a un) envoyé avec une requête ou une réponse HTTP est dans un format et un encodage définis par les champs d'en-tête de l'entité.
entity-body = *OCTET
Le corps d'entité n'est présent dans un message que lorsqu'un corps de message est présent, comme décrit dans la section 4.3. Le corps de l'entité est obtenu à partir du corps du message en décodant tout encodage de transfert (Transfer-Encoding) qui peut avoir été appliqué pour assurer un transfert sûr et correct du message.
7.2.1 Type (Type)
Lorsqu'un corps d'entité est inclus dans un message, le type de données de ce corps est déterminé par les champs d'en-tête Content-Type et Content-Encoding. Ceux-ci définissent un modèle d'encodage ordonné à deux couches :
entity-body := Content-Encoding( Content-Type( data ) )
Content-Type spécifie le type de média des données sous-jacentes. Content-Encoding peut (MAY) être utilisé pour indiquer tout encodage de contenu supplémentaire appliqué aux données, généralement utilisé pour la compression de données, qui est une propriété de la ressource demandée. Il n'y a pas d'encodage par défaut.
Tout message HTTP/1.1 contenant un corps d'entité devrait (SHOULD) inclure un champ d'en-tête Content-Type définissant le type de média pour ce corps. Le destinataire peut (MAY) tenter de deviner le type de média en inspectant son contenu et/ou l'extension de nom de l'URI utilisé pour identifier la ressource, si et seulement si le champ Content-Type ne donne pas de type de média. Si le type de média reste inconnu, le destinataire devrait (SHOULD) le traiter comme type "application/octet-stream".
7.2.2 Entity Length (Longueur de l'Entité)
La longueur d'entité (entity-length) d'une entité est la longueur du corps de l'entité ou serait la longueur du corps de l'entité avant l'application de tout encodage de transfert. La section 4.4 définit comment déterminer la longueur de transfert d'un message.