If-Match header
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 die Methoden GET
und HEAD
, oder lädt Ressourcen für PUT
und andere nicht sichere 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 Antwort 412 Precondition Failed
zurückgegeben.
Der Vergleich mit dem gespeicherten ETag
verwendet den starken Vergleichsalgorithmus, was bedeutet, dass zwei Dateien byte-by-byte als identisch betrachtet werden.
Wenn ein aufgelistetes ETag
das Präfix W/
besitzt, das auf einen schwachen Entitätstag hinweist, wird dieser Vergleichsalgorithmus niemals einen Treffer erzielen.
Es gibt zwei häufige Anwendungsfälle:
- Für die Methoden
GET
undHEAD
, in Kombination mit einemRange
-Header, kann es garantieren, 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 verlorener Aktualisierungen zu verhindern. Es kann überprüfen, ob die Modifikation einer Ressource, die der Nutzer hochladen möchte, keine anderen Änderungen überschreibt, die seit dem Abruf der ursprünglichen Ressource vorgenommen wurden.
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 repräsentieren. Sie sind eine Zeichenfolge aus ASCII-Zeichen, die in Anführungszeichen gesetzt sind (wie
"675af34563dc-tr34"
). Sie können mitW/
vorangestellt werden, um anzuzeigen, dass sie 'schwach' sind, d.h. dass sie die Ressource semantisch, aber nicht byte-by-byte repräsentieren. In einemIf-Match
-Header werden schwache Entitätstags jedoch niemals übereinstimmen. *
-
Das Sternchen ist ein spezieller Wert, der jede Ressource darstellt. Beachten Sie, dass dies als
false
übereinstimmen muss, wenn der Ursprungsserver keine aktuelle Repräsentation 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