web-dev-qa-db-ja.com

HTTP Dateヘッダーの背後にある理論的根拠は何ですか?

RFC 2616 を読みましたが、それでも日付フィールドは何のためにあるのでしょうか。 Last-Modifiedフィールドがあります。これは、メタデータを提供するだけでなく、キャッシュ( 'If-Modified-Since')にも実際に意味があります。

しかし、別のDateヘッダーの情報を2倍にするためにどのような用途がありますか?

38
Boldewyn

仕様 ごとに、年齢の計算に使用されます。サーバーが何時だと思っているかわからない場合、リソースの「経過時間」を計算することはできません。仕様の関連テキストは次のとおりです。

キャッシュが応答を受信したときの経過時間計算アルゴリズムの要約:

age_value
は、この応答でキャッシュによって受信されたAge:ヘッダーの値です。

date_value
は、オリジンサーバーのDate:ヘッダーの値です

request_time
は、キャッシュがこのキャッシュされた応答をもたらす要求を行った(ローカル)時間です。

response_time
は、キャッシュが応答を受信した(ローカル)時間です

now
は現在の(現地時間)時間です

apparent_age = max(0, response_time - date_value);
corrected_received_age = max(apparent_age, age_value);
response_delay = response_time - request_time;
corrected_initial_age = corrected_received_age + response_delay;
resident_time = now - response_time;
current_age   = corrected_initial_age + resident_time;
39

「禁止されているヘッダー名」のリストにあるため、Dateヘッダーを使用しないことを検討してください。

MDN Web docsからの次の説明が役立つ場合があります。


禁止ヘッダー名は、プログラムで変更できないHTTPヘッダーの名前です。具体的には、HTTP要求ヘッダー名(禁止された応答ヘッダー名とは対照的)。

ユーザーエージェントがヘッダーを完全に制御できるため、このようなヘッダーを変更することは禁止されています。 Sec-で始まる名前は、XMLHttpRequestなどのヘッダーを開発者が制御できるようにするFetchを使用してAPIから安全に新しいヘッダーを作成するために予約されています。

禁止されているヘッダー名は、Proxy-またはSec-で始まるか、次のいずれかの名前です。

  • Accept-Charset
  • リストアイテム
  • Accept-Encoding
  • Access-Control-Request-Headers
  • Access-Control-Request-Method
  • 接続
  • コンテンツの長さ
  • Cookie
  • Cookie2
  • 日付
  • DNT
  • 期待する
  • ホスト
  • 生き続ける
  • 原点
  • プロキシ-
  • Sec-
  • リファラー
  • TE
  • トレーラー
  • 転送エンコーディング
  • アップグレード
  • Via
0
DaviideSnow