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

格納された ETag との比較では、強い比較アルゴリズムを使用、つまり二つのファイルがバイト単位で同一である場合のみ同一とみなします。これは W/ 接頭辞が ETag の前で使用されている場合には弱い比較アルゴリズムになります。

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

  • 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: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"

If-Match: W/"67ab43", "54ed21", "7892dd"

If-Match: *

仕様書

仕様書 題名
RFC 7232, セクション 3.1: If-Match Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応
実験的非推奨非標準
Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 ありIE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非推奨。新しいウェブサイトでは使用しないでください。
非推奨。新しいウェブサイトでは使用しないでください。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mfuji09, silverskyvicto
最終更新者: mfuji09,