2013-02-14 12 views
6

両方ともメッセージ本文のハッシュサムを表します。特定のクライアントによって最後にリソースが要求されて以来、リソースが変更されたかどうかをチェックするために両方を使用できます。彼らが同一のことをしている場合、なぜRFC2616仕様に共存するのでしょうか?HTTPプロトコルでは、ETagとContent-MD5の違いは何ですか?

答えて

11

どちらもメッセージ本文のハッシュサムを表します。

かなりです。 Content-MD5はハッシュですが、ETagは不透明な識別子です。つまり、クライアントはその意味を知りません。適切なETagを生成する1つの方法は、リソースのデータをハッシングすることですが、確かに唯一の方法ではありません。

どちらも、リソースは、それが特定のクライアントによって要求された 前回変更されたかどうかをチェックするために使用することができます。

どちらの場合でも理論的には誤検出と偽陰性の両方を得ることはできますが、それは本当です。

これらが同じことをする場合、なぜそれらはRFC2616仕様で共存しますか?

これらは異なる目的を果たすため共存します。 "彼らは同じことをする"という言葉は真実ではない。

Content-MD5は、転送されるリソースの整合性をクライアントに確認させることを目的としています。その意味は明確に定義されており、応答が受信された後では使用されません。

ETagは、キャッシングを調整するために使用されます。不透明であるため、 "リソース識別子"の意味をそのメカニックから切り離すことができます(サーバーは必要な識別スキームを使用することができ、将来このスキームを自由に変更することができます。 )。さらに、ETagweak validationをサポートしており、2つのビットごとに異なるバージョンのリソースを意味的に同等のものとして扱うことができます。

関連する問題