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.
Der HTTP If-Match
Request-Header macht eine Anfrage bedingt.
Ein Server gibt Ressourcen für die Methoden GET
und HEAD
zurück oder lädt Ressourcen für PUT
und andere unsichere Methoden hoch, nur wenn die Ressource mit einem der ETag
-Werte im If-Match
-Request-Header übereinstimmt.
Wenn die Bedingung nicht erfüllt ist, wird stattdessen die 412 Precondition Failed
-Antwort zurückgegeben.
Der Vergleich mit dem gespeicherten ETag
verwendet den starken Vergleichsalgorithmus, was bedeutet, dass zwei Dateien byteweise identisch sein müssen.
Wenn ein aufgelistetes ETag
das Präfix W/
hat, das einen schwachen Entitätstag anzeigt, wird dieser Vergleichsalgorithmus niemals übereinstimmen.
Es gibt zwei häufige Anwendungsfälle:
- Für die Methoden
GET
undHEAD
, die in Kombination mit einemRange
-Header verwendet werden, kann sichergestellt werden, dass die neu angeforderten Bereiche von derselben Ressource stammen wie der vorherige. - Für andere Methoden, insbesondere für
PUT
, kannIf-Match
verwendet werden, um das Problem des verlorenen Updates zu verhindern. Es kann überprüft werden, ob die Änderung einer Ressource, die der Benutzer hochladen möchte, keine andere Änderung überschreibt, die seit dem Abrufen der ursprünglichen Ressource vorgenommen wurde.
Header-Typ | Request-Header |
---|---|
Verbotener Request-Header | Nein |
Syntax
If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …
Direktiven
<etag_value>
-
Entitätstags, die die angeforderten Ressourcen eindeutig darstellen. Es handelt sich um eine Zeichenfolge von ASCII-Zeichen, die zwischen Anführungszeichen gesetzt sind (zum Beispiel
"675af34563dc-tr34"
). Sie können mitW/
versehen werden, um anzuzeigen, dass sie 'schwach' sind, d.h. dass sie die Ressource semantisch, aber nicht byteweise darstellen. In einemIf-Match
-Header werden schwache Entitätstags jedoch niemals übereinstimmen. *
-
Der Stern ist ein spezieller Wert, der jede Ressource darstellt. Beachten Sie, dass dies als
false
übereinstimmen muss, wenn der Origin-Server keine aktuelle Darstellung für die Zielressource hat.
Beispiele
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"
If-Match: "67ab43", "54ed21", "7892dd"
If-Match: *
Spezifikationen
Specification |
---|
HTTP Semantics # field.if-match |
Browser-Kompatibilität
Siehe auch
ETag
If-None-Match
,If-Modified-Since
,If-Unmodified-Since
bedingte Request-Header412 Precondition Failed