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 liefert Ressourcen für GET
und HEAD
Methoden 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.
Falls die Bedingung nicht erfüllt ist, wird stattdessen die Antwort 412 Precondition Failed
zurückgegeben.
Der Vergleich mit dem gespeicherten ETag
verwendet den starken Vergleichsalgorithmus, was bedeutet, dass zwei Dateien byteweise identisch sein müssen.
Wenn ein aufgeführter ETag
das W/
-Präfix hat, das einen schwachen Entitätstag andeutet, wird dieser Vergleichsalgorithmus ihn niemals als Übereinstimmung erkennen.
Es gibt zwei häufige Anwendungsfälle:
- Für
GET
undHEAD
Methoden, in Kombination mit einemRange
-Header, kann es garantieren, dass die neuen angeforderten Bereiche aus derselben Ressource stammen wie der vorher angeforderte Bereich. - Für andere Methoden, insbesondere für
PUT
, kannIf-Match
verwendet werden, um das Problem des verloren gegangenen Updates zu verhindern. Es kann überprüfen, ob die Modifikation einer Ressource, die der Benutzer hochladen möchte, keine andere seit dem Abruf der ursprünglichen Ressource durchgeführte Änderung überschreibt.
Header-Typ | Request-Header |
---|---|
Verbotener Headername | Nein |
Syntax
If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …
Direktiven
<etag_value>
-
Entitätstags, die die angeforderten Ressourcen eindeutig darstellen. Sie sind eine Zeichenfolge von ASCII Zeichen, die in Anführungszeichen gesetzt werden (wie
"675af34563dc-tr34"
). Sie können mitW/
vorangestellt 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 nie übereinstimmen. *
-
Der Stern ist ein spezieller Wert, der eine beliebige Ressource darstellt. Beachten Sie, dass dies als
false
gewertet werden muss, wenn der Ursprungsserver 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
BCD tables only load in the browser
Siehe auch
ETag
If-None-Match
,If-Modified-Since
,If-Unmodified-Since
bedingte Request-Header412 Precondition Failed