情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

サーバサイドウェブ開発基礎 HTTP詳説 条件リクエスト

HTTPリクエストには条件を付加することができます。すなわち、クライアントはサーバに条件が満たされている場合にのみHTTPリクエストに対する処理を行うことを要求することができます。

条件はHTTPリクエストに種類に応じて下のようなヘッダフィールドを設定することによって付加することができます。

  • If-Match
  • If-None-Match
  • If-Modified-Since
  • If-Unmodified-Since
  • If-Range

ただし、If-MatchヘッダフィールドとIf-Unmodified-Sinceヘッダフィールドを同時に設定することはできません。

また、If-None-MatchヘッダフィールドとIf-Modified-Sinceヘッダフィールドを同時に設定することもできません。

また、条件はメソッドがCONNECTOPTIONSTRACEであるHTTPリクエストでは使用することができません。

なお、条件付きのHTTPリクエストを条件リクエストと言います。

If-Matchヘッダフィールド

If-MatchヘッダフィールドはHTTPリクエストにリソースのリプリゼンテーションの存在タグに関する条件を付加します。

If-Matchヘッダフィールドの値には*か1個以上の存在タグのリストを,区切りで指定します。

If-Matchヘッダフィールドの値が*である場合にはサーバはリソースのリプリゼンテーションが存在する場合にのみHTTPリクエストに対する処理を行わなければなりません。また、1個以上の存在タグのリストである場合にはリソースのリプリゼンテーションの存在タグがリストに含まれている場合にのみ処理を行わなければなりません。

HTTPリクエストに対する処理が行われなかった場合にはサーバはステータスコードが412Precondition Failed)のHTTPレスポンスを返信するようにします。

If-None-Matchヘッダフィールド

If-None-MatchヘッダフィールドはHTTPリクエストにリソースのリプリゼンテーションの存在タグに関する条件を付加します。

If-None-Matchヘッダフィールドの値には*か1個以上の存在タグのリストを,区切りで指定します。

If-None-Matchヘッダフィールドの値が*である場合にはサーバはリソースのリプリゼンテーションが存在しない場合にのみHTTPリクエストに対する処理を行わなければなりません。また、1個以上の存在タグのリストである場合にはリソースのリプリゼンテーションの存在タグがリストに含まれていない場合にのみ処理を行わなければなりません。

HTTPリクエストに対する処理が行われなかった場合でHTTPリクエストのメソッドがGETHEADである場合にはサーバはステータスコードが304Not Modified)のHTTPレスポンスを返信するようにします。また、それ以外のメソッドである場合にはステータスコードが412Precondition Failed)のHTTPレスポンスを返信するようにします。

If-Modified-Sinceヘッダフィールド

If-Modified-SinceヘッダフィールドはメソッドがGETHEADのHTTPリクエストにおいて設定できるヘッダフィールドであり、HTTPリクエストにリソースのリプリゼンテーションの更新日時に関する条件を付加します。

If-Modified-Sinceヘッダフィールドの値にはHTTP日時を指定します。

サーバはリソースのリプリゼンテーションの更新日時がIf-Modified-Sinceヘッダフィールドの値より新しい場合にのみHTTPリクエストに対する処理を行わなければなりません。

HTTPリクエストに対する処理が行われなかった場合にはサーバはステータスコードが304Not Modified)のHTTPレスポンスを返信するようにします。

If-Unmodified-Sinceヘッダフィールド

If-Unmodified-SinceヘッダフィールドはHTTPリクエストにリソースのリプリゼンテーションの更新日時に関する条件を付加します。

If-Unmodified-Sinceヘッダフィールドの値にはHTTP日時を指定します。

サーバはリソースのリプリゼンテーションの更新日時がIf-Unmodified-Sinceヘッダフィールドの値と同じであるか古い場合にのみHTTPリクエストに対する処理を行わなければなりません。

HTTPリクエストに対する処理が行われなかった場合にはサーバはステータスコードが412Precondition Failed)のHTTPレスポンスを返信するようにします。

If-Rangeヘッダフィールド

If-RangeヘッダフィールドはメソッドがGETRangeヘッダフィールドが設定されているHTTPリクエストにおいて設定できるヘッダフィールドであり、HTTPリクエストにリソースのリプリゼンテーションの強い存在タグに関する条件を付加します。

If-Rangeヘッダフィールドの値には強い存在タグを指定します。

サーバはリソースのリプリゼンテーションの存在タグがIf-Rangeヘッダフィールドの値に一致する場合にのみHTTPリクエストを範囲リクエストとして処理しなければなりません。逆に、一致しない場合には範囲リクエストではないものとして処理しなければなりません。

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-http, web