If-Match ヘッダー
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
HTTP の If-Match リクエストヘッダーは、リクエストを条件付きにします。
サーバーは、GET および HEAD メソッドに対してはリソースを返し、PUT などの安全でないメソッドに対してはリソースをアップロードしますが、これらは、リソースが If-Match リクエストヘッダー内の ETag 値のいずれかと一致する場合にのみ行われます。
条件が満たされない場合、代わりに 412 Precondition Failed レスポンスが返されます。
格納された ETag との比較では、強い比較アルゴリズムを使用、つまり 2 つのファイルがバイト単位で同一である場合のみ同一とみなします。列挙された ETag に W/ 接頭辞がついている場合は、弱いエンティティタグであることを示し、この比較アルゴリズムでの比較は行われません。
一般的な使用例は 2 つあります。
GETおよびHEADメソッドの場合は、Rangeヘッダーと組み合わせて使用され、リクエストされた新しい範囲が以前のものと同じリソースからのものであることを保証することができます。- 他のメソッド、特に
PUTの場合は、If-Matchを使用して更新プログラムが失われる問題を防ぐことができます。 ユーザーがアップロードしたいリソースの変更が、元のリソースがフェッチされた後に行われた別の変更を上書きしないかどうかを確認できます。
| ヘッダー種別 | リクエストヘッダー |
|---|---|
| 禁止リクエストヘッダー | いいえ |
構文
http
If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …
ディレクティブ
<etag_value>-
リクエストされたリソースを一意に表すエンティティタグです。 二重引用符の間に置かれた ASCII 文字列 (
"675af34563dc-tr34"など) です。 これらのタグは「弱い」こと、つまり、意味的にはリソースを表現しているが、バイト単位の一致を示していないことを示すために、W/という接頭辞を付けることができます。 しかし、If-Matchヘッダーでは、弱いエンティティタグは一致することはありません。 *-
アスタリスクは任意のリソースを表す特殊な値です。 なお、オリジンサーバーでターゲットリソースについての現在の表現をがない場合、
falseとして一致します。
例
http
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"
If-Match: "67ab43", "54ed21", "7892dd"
If-Match: *
仕様書
| 仕様書 |
|---|
| HTTP Semantics> # field.if-match> |
ブラウザーの互換性
関連情報
ETagIf-None-Match,If-Modified-Since,If-Unmodified-Sinceconditional request headers412 Precondition Failed