6.4. コンテンツ
HTTP メッセージは、完全または部分的な表現をメッセージ コンテンツとして転送することが多い。これは、メッセージフレーミングによって区切られ、 ヘッダーセクションの後に送信されるオクテットのストリームである。
このコンテンツの抽象的定義は、データが メッセージフレーミングから抽出された後のものを反映している。たとえば、HTTP/1.1 メッセージ本文 ( [HTTP/1.1] の 6節) は、チャンク化転送コーディングでエンコードされたデータストリーム — 一連の データチャンク、一つの長さゼロのチャンク、およびトレーラーセクション — から構成される場合があるが、 同じメッセージのコンテンツには、転送コーディングが 復号された後のデータストリームのみが含まれる。チャンク長、チャンク化フレーミング構文、またはトレーラー フィールド (6.5節) は含まれない。
6.4.1. コンテンツセマンティクス
リクエスト内のコンテンツの目的は、メソッドセマンティクス (9節) によって定義される。
たとえば、PUT リクエスト (9.3.4節) のコンテンツ内の表現は、 リクエストが正常に適用された後の ターゲットリソース の望ましい状態を表す一方、 POST リクエスト (9.3.3節) のコンテンツ内の表現は、 ターゲットリソースによって処理される情報を表す。
レスポンスでは、コンテンツの目的はリクエストメソッド、レスポンス ステータスコード (15節)、および そのコンテンツを記述するレスポンスフィールドによって定義される。たとえば、GET (200 (OK) レスポンスのコンテンツは、メッセージ生成日時 (9.3.1節) へのレスポンスとして 観測された ターゲットリソース の現在の状態を表し、 メッセージ生成日時 (6.6.1節) における状態である一方、 同じステータスコードを持つ POST へのレスポンスのコンテンツは、処理 結果または処理適用後のターゲットリソースの新しい状態のいずれかを表す場合がある。
GET への 206 (Partial Content) レスポンスのコンテンツには、選択された表現の単一の部分、または その表現の複数の部分を含むマルチパートメッセージ本文のいずれかが含まれる。これは 15.3.7節 で説明される。
エラーステータスコードを持つレスポンスメッセージは通常、 エラー状態を表すコンテンツを含み、そのコンテンツはエラー状態と それを解決するために推奨される手順を記述する。
HEAD リクエストメソッド (9.3.2節) へのレスポンスには決してコンテンツが含まれない。関連するレスポンス ヘッダーフィールドは、リクエストメソッドが GET (9.3.1節) であった場合にその値が何であったかだけを示す。
すべての 1xx (情報)、204 (No Content)、および 304 (Not Modified) レスポンスにはコンテンツが含まれない。
その他のすべてのレスポンスにはコンテンツが含まれるが、そのコンテンツの長さが 0 である場合もある。
6.4.2. コンテンツの識別
完全または部分的な表現がメッセージコンテンツとして転送される場合、 送信者が提供するか、受信者が、その特定の表現に対応するリソースの 識別子を判断できることが望ましい場合が多い。たとえば、 「現在の天気 レポート」というリソースに GET リクエストを行うクライアントは、返されたコンテンツに固有の識別子 (例: 「20210720T1711 時点の Laguna Beach の天気 レポート」) を必要とする場合がある。これは、 時間とともに表現が変化すると予想されるリソースからのコンテンツを共有または ブックマークする際に役立つ。
リクエストメッセージの場合:
- リクエストに Content-Location ヘッダーフィールドがある場合、送信者は コンテンツが Content-Location フィールド値によって識別されるリソースの表現であると表明する。ただし、そのような表明は 他の手段 (この仕様では定義されない) によって検証できない限り信頼できない。 それでも、この情報は改訂履歴のリンクに役立つ場合がある。
- それ以外の場合、コンテンツは HTTP によって識別されないが、より具体的な識別子が コンテンツ自体の中で提供される場合がある。
レスポンスメッセージの場合、次の規則が一致するものが 見つかるまで順番に適用される:
- リクエストメソッドが HEAD、またはレスポンスステータスコードが 204 (No Content) または 304 (Not Modified) である場合、レスポンスに コンテンツはない。
- リクエストメソッドが GET でレスポンスステータスコードが 200 (OK) である場合、コンテンツは ターゲット リソースの表現である (7.1節)。
- リクエストメソッドが GET でレスポンスステータスコードが 203 (Non-Authoritative Information) である場合、 コンテンツは、仲介者によって提供された ターゲットリソース の 潜在的に変更または拡張された表現である。
- リクエストメソッドが GET でレスポンスステータスコードが 206 (Partial Content) である場合、コンテンツは ターゲットリソースの表現の一つ以上の部分である。
- レスポンスに Content-Location ヘッダーフィールドがあり、そのフィールド値が ターゲット URI と同じ URI への参照である場合、コンテンツは ターゲットリソースの表現である。
- レスポンスに Content-Location ヘッダーフィールドがあり、そのフィールド値が ターゲット URI とは異なる URI への参照である場合、送信者は コンテンツが Content-Location フィールド値によって識別されるリソースの表現であると表明する。ただし、そのような表明は 他の手段 (この仕様では定義されない) によって検証できない限り信頼できない。
- それ以外の場合、コンテンツは HTTP によって識別されないが、より具体的な識別子が コンテンツ自体の中で提供される場合がある。
5.6.5. コメント
一部の HTTP フィールドには、コメントテキストを 括弧で囲むことによってコメントを含めることができる。コメントは、フィールド値定義の一部として "comment" を含むフィールドでのみ許可される。