If-Match

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

HTTP の If-Match リクエストヘッダーは、リクエストを条件付きにします。 GET および HEAD メソッドの場合、リストされた ETag のいずれかと一致する場合にのみ、サーバーは要求されたリソースを返します。PUT と他の安全ではないメソッドでは、この場合のみリソースをアップロードします。

格納された ETag との比較では、強い比較アルゴリズムを使用、つまり二つのファイルがバイト単位で同一である場合のみ同一とみなします。列挙された ETagW/ 接頭辞がついている場合は弱いエンティティタグであることを示し、この比較アルゴリズムでの比較は行われません。

一般的な使用例は二つあります。

  • 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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
If-Match

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報