メインコンテンツまでスキップ

3. Repr-Digest フィールド

Repr-Digest HTTP フィールドは、リクエストとレスポンスで使用して、選択された表現データ全体([HTTP] のセクション 8.1 を参照)にハッシュアルゴリズムを適用して計算されたダイジェストを伝達できます。

表現は、メッセージに対する HTTP セマンティクスの影響を考慮に入れます。たとえば、コンテンツは範囲リクエストや HEAD などのメソッドの影響を受ける可能性がありますが、コンテンツが「回線上で」転送される方法は他の変換(たとえば、HTTP/1.1 の転送コーディング、[HTTP/1.1] のセクション 6.1 を参照)に依存します。HTTP 表現の概念を説明するために、付録 A にいくつかの例が示されています。

メッセージに表現データがない場合でも、空の文字列でダイジェストを計算することで、表現データが送信されなかったことを表明することは可能です(セクション 6.3 を参照)。

Repr-Digest は辞書([STRUCTURED-FIELDS] のセクション 3.2 を参照)であり、それぞれ:

  • キーは、ダイジェストの計算に使用されるハッシュアルゴリズム(セクション 5 を参照)を伝達します。

  • 値は、ダイジェスト計算によって生成されたバイト出力のエンコードされたバージョンを伝達するバイトシーケンスです。

例:

注:RFC 8792 による '' 行の折り返し

Repr-Digest: \
sha-512=:YMAam51Jz/jOATT6/zvHrLVgOYTGFy1d6GJiOHTohq4yP+pgk4vf2aCs\
yRZOtw8MjkM7iw7yZ/WkppmM44T3qg==:

辞書タイプは、たとえば、異なる機能を持つ、または機能が進化しているエンドポイントの集団をサポートするために、異なるハッシュアルゴリズムを使用して計算された複数のダイジェストを添付するために使用できます。このようなアプローチは、より弱いアルゴリズムからの移行をサポートできます(セクション 6.6 を参照)。

注:RFC 8792 による '' 行の折り返し

Repr-Digest: \
sha-256=:d435Qo+nKZ+gLcUHn7GQtQ72hiBVAgqoLsZnZPiTGPk=:,\
sha-512=:YMAam51Jz/jOATT6/zvHrLVgOYTGFy1d6GJiOHTohq4yP+pgk4vf2aCs\
yRZOtw8MjkM7iw7yZ/WkppmM44T3qg==:

受信者は、任意のダイジェストまたはすべてのダイジェストを無視してもよい (MAY)。アプリケーション固有の動作またはローカルポリシーは、伝達されたダイジェストの処理および検証の実践に追加の制約を設定してもよい (MAY)。セキュリティに関する考慮事項では、ダイジェストの無視(セクション 6.6 を参照)および複数のダイジェストの検証(セクション 6.7 を参照)に関連する問題の一部を扱っています。

送信者は、受信者が特定のハッシュアルゴリズムをサポートしているかどうかを知らなくてもダイジェストを送信してもよい (MAY)。送信者は、受信者がそれを無視することを知っている場合でもダイジェストを送信してもよい (MAY)。

Repr-Digest はトレーラーセクションで送信できます。この場合、Repr-Digest はヘッダーセクションにマージされてもよい (MAY)。[HTTP] のセクション 6.5.1 を参照してください。

3.1. 状態変更リクエストでの Repr-Digest の使用

状態変更リクエストに含まれる表現がターゲットリソースを記述していない場合、表現ダイジェストは表現データ上で計算されなければなりません (MUST)。表現ダイジェストには完全な表現メタデータが必要なため、これが唯一の可能な選択肢です(セクション 3 を参照)。

レスポンスでは、

  • 表現がリクエストのステータスを記述している場合、Repr-Digest は含まれている表現上で計算されなければなりません (MUST)(付録 B.8 を参照)。

  • 参照されるリソースがある場合、Repr-Digest は、それがターゲットリソースと異なる場合でも、参照されるリソースの選択された表現上で計算されなければなりません (MUST)。これにより、含まれている表現上で Repr-Digest が計算される場合とされない場合があります。

後者のケースは、たとえば Content-Location ヘッダーフィールド([HTTP] のセクション 8.7 を参照)を使用して、特定のメソッドの HTTP セマンティクスに従って行われます。対照的に、Location ヘッダーフィールドは表現メタデータではないため、Repr-Digest には影響しません。

たとえば、PATCH リクエストでは、表現メタデータはターゲットリソースではなくパッチドキュメントを参照するため、表現ダイジェストはパッチドキュメント上で計算されます([PATCH] のセクション 2 を参照)。代わりに、レスポンスでは、表現ダイジェストはパッチが適用されたリソースの選択された表現上で計算されます。

3.2. レスポンスにおける Repr-Digest と Content-Location

状態変更メソッドが Content-Location ヘッダーフィールドを返す場合、含まれている表現はその値によって識別されるリソースを参照し、Repr-Digest はそれに応じて計算されます。例は付録 B.7 に示されています。