If-Match
HTTP の If-Match リクエストヘッダーは、リクエストを条件付きにします。 GET および HEAD メソッドの場合、リストされた ETag のいずれかと一致する場合にのみ、サーバーは要求されたリソースを返します。PUT と他の安全ではないメソッドでは、この場合のみリソースをアップロードします。
格納された ETag との比較では、強い比較アルゴリズムを使用、つまり二つのファイルがバイト単位で同一である場合のみ同一とみなします。列挙された ETag に W/ 接頭辞がついている場合は弱いエンティティタグであることを示し、この比較アルゴリズムでの比較は行われません。
一般的な使用例は二つあります。
GETおよびHEADメソッドの場合は、Rangeヘッダーと組み合わせて使用され、リクエストされた新しい範囲が以前のものと同じリソースからのものであることを保証することができます。一致しない場合、416(Range Not Satisfiable) レスポンスが返されます。- 他のメソッド、特に
PUTの場合は、If-Matchを使用して更新プログラムが失われる問題を防ぐことができます。ユーザーがアップロードしたいリソースの変更が、元のリソースがフェッチされた後に行われた別の変更を上書きしないかどうかを確認できます。リクエストを満たすことができない場合、412(Precondition Failed) レスポンスが返されます。
構文
If-Match: <etag_value> If-Match: <etag_value>, <etag_value>, …
ディレクティブ
- <etag_value>
-
リクエストされたリソースを一意に表すエンティティタグです。二重引用符の間に置かれた ASCII 文字列 (
"675af34563dc-tr34"など) です。これらのタグは「弱い」こと、つまり、意味的にはリソースを表現しているが、バイト単位の一致を示していないことを示すために、W/という接頭辞を付けることができます。しかし、If-Matchヘッダーでは、弱いエンティティタグは一致することはありません。 *-
アスタリスクは任意のリソースを表す特殊な値です。
例
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d" If-Match: "67ab43", "54ed21", "7892dd" If-Match: *
仕様書
| 仕様書 | 題名 |
|---|---|
| RFC 7232, セクション 3.1: If-Match | Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
ETagIf-Unmodified-SinceIf-Modified-SinceIf-None-Match416Range Not Satisfiable412Precondition Failed