質問

現在、必要に応じて HTTP の「304 Not Modified」に応答する PHP スクリプトを作成しています。

(見る 質問 #2086712 私がこれまでに行ったことに関して)。

現在、私は次のように答えています。

  • 変更された場合-以降
  • 一致しない場合

しかし、さらに 3 つのヘッダーが「条件付き GET」をトリガーできることがわかりました (「条件付き GET」を参照) http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3):

  • If-Match
  • 変更されていない場合、以降
  • If-Range

最後の 2 つは私のキャッシュ システムには無関係なようですが (「大きな」ダウンロードを再開するときに使用されるようです)、「If-Match」が私のシステムで役立つかどうかはわかりません。

「If-Match」はプロキシまたは Web ブラウザで「通常の」ページ コンテンツに使用されますか?「If-Match」は「If-None-Match」とどのように異なりますか?

これら 3 つをサポートする必要がありますか、それともそのうちの一部だけをサポートする必要がありますか?お手伝いは大歓迎です!

役に立ちましたか?

解決

If-Match

次の場合、サーバーは 412 (Precondition Failed) 応答を返さなければなりません (MUST)。

  • どのエンティティ タグも一致しません。
  • または「*」が指定されており、現在のエンティティが存在しません

次の場合、If-Match は無視されます。

  • いずれかのエンティティ タグが一致する
  • または、リクエストの結果が 2xx または 412 ステータス以外の場合 (If-Match なし)
  • または、「*」が指定され、リソースの現在のエンティティが存在する場合

に関する結論 一致する場合:

  • 「If-Match」の意味:*" は、オリジンサーバーによって表現が選択された場合にメソッドを実行する必要があることを意味します...が存在しますが、表現が存在しない場合は実行してはなりません。

RFC2616 の If-Match

変更されていない場合、以降

次の場合、サーバーは 412 (Precondition Failed) 応答を返さなければなりません (MUST)。

  • リクエストされたバリアントは指定された時間以降に変更されています

If-Unmodified-Since は無視される必要があります。

  • 要求されたリソースは、このフィールドで指定された時刻以降変更されていません。
  • または、通常のリクエスト (つまり、If-Unmodified-Since ヘッダーなし) では、2xx または 412 ステータス以外の結果が返されます。
  • または指定された日付が無効です

RFC2616 の If-Unmodified-since

If-Range

非公式には、その意味は、「エンティティが変更されていない場合は、不足している部分を送ってください。」です。それ以外の場合は、新しいエンティティ全体を送ってください。

前提条件:

  • If-Range ヘッダ すべき と一緒にのみ使用してください Range ヘッダー、および しなければならない リクエストがあった場合は無視されます 含まれていません ある Range ヘッダー、またはサーバーの場合 サポートしません サブレンジ操作。

サーバーは、次の場合に 206 (部分コンテンツ) 応答を提供する必要があります (SHOULD)。 If-Range header はエンティティの現在のエンティティ タグと一致します。それ以外の場合、サーバーは 200 (OK) 応答を使用してエンティティ全体を返す必要があります (SHOULD)。

RFC2616 の If-Range

未定義の結果

次のヘッダーの組み合わせがあると、未定義の結果が生じます。

  • 変更された場合-以降 そして If-Match
  • 変更された場合-以降 そして 変更されていない場合、以降
  • 一致しない場合 そして If-Match
  • 一致しない場合 そして 変更されていない場合、以降

これらのルールは、次のルールから分解されたものです (次のルールにあります)。 RFC2616):

  • If-Match そして ( 一致しない場合 または 変更された場合-以降)
  • 変更された場合-以降 そして ( If-Match または If-Unmodified-since )
  • 一致しない場合 そして ( If-Match または If-Unmodified-since )
  • 変更されていない場合、以降 そして ( 一致しない場合 または 変更された場合-以降)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top