7. Entity (エンティティ)
リクエストメソッドまたはレスポンスステータスコードによって制限されない限り、リクエストおよびレスポンスメッセージはエンティティを転送できます (MAY)。エンティティは、エンティティヘッダフィールド (entity header field) とエンティティボディ (entity body) で構成されますが、一部のレスポンスにはエンティティヘッダのみが含まれます。
このセクションでは、送信者 (sender) と受信者 (receiver) の両方が、誰がエンティティを送信し、誰が受信するかに応じて、クライアントまたはサーバーを指します。
7.1 Entity Header Fields (エンティティヘッダフィールド)
エンティティヘッダフィールドは、エンティティボディに関するメタ情報を定義するか、ボディが存在しない場合は、リクエストによって識別されるリソースに関するメタ情報を定義します。このメタ情報の一部はオプション (OPTIONAL) です。一部は本仕様の部分によって要求される (REQUIRED) 場合があります。
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
拡張ヘッダメカニズムにより、プロトコルを変更することなく追加のエンティティヘッダフィールドを定義できますが、受信者がこれらのフィールドを認識できるとは想定できません。受信者は、認識できないヘッダフィールドを無視すべき (SHOULD) であり、透過プロキシはそれらを転送しなければなりません (MUST)。
7.2 Entity Body (エンティティボディ)
HTTPリクエストまたはレスポンスとともに送信されるエンティティボディ(存在する場合)は、エンティティヘッダフィールドで定義された形式とエンコーディングで送信されます。
entity-body = *OCTET
エンティティボディは、第4.3節で説明されているように、メッセージボディが存在する場合にのみメッセージに存在します。エンティティボディは、メッセージの安全で正確な転送を確保するために適用された可能性のある任意の転送エンコーディング (Transfer-Encoding) をデコードすることによって、メッセージボディから取得されます。
7.2.1 Type (タイプ)
エンティティボディがメッセージに含まれている場合、そのボディのデータタイプは、ヘッダフィールドContent-TypeとContent-Encodingによって決定されます。これらは、2層の順序付けられたエンコーディングモデルを定義します:
entity-body := Content-Encoding( Content-Type( data ) )
Content-Typeは、基礎となるデータのメディアタイプを指定します。Content-Encodingは、データに適用された任意の追加のコンテンツエンコーディングを示すために使用でき (MAY)、通常はデータ圧縮に使用され、これはリクエストされたリソースのプロパティです。デフォルトのエンコーディングはありません。
エンティティボディを含む任意のHTTP/1.1メッセージは、そのボディのメディアタイプを定義するContent-Typeヘッダフィールドを含むべき (SHOULD) です。Content-Typeフィールドがメディアタイプを指定していない場合にのみ、受信者は、その内容および/またはリソースを識別するために使用されるURIの名前拡張子を検査することによってメディアタイプを推測することができます (MAY)。メディアタイプがまだ不明な場合、受信者はそれをタイプ "application/octet-stream" として扱うべき (SHOULD) です。
7.2.2 Entity Length (エンティティ長)
エンティティのエンティティ長 (entity-length) は、エンティティボディの長さ、または任意の転送エンコーディングが適用される前のエンティティボディとなる長さです。第4.4節では、メッセージの転送長を決定する方法を定義しています。