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 kontextabhängig.
Ein Server wird Ressourcen für GET
- und HEAD
-Methoden zurückgeben oder die Ressource für PUT
- und andere nicht-sichere Methoden hochladen, 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
nutzt den strong comparison algorithm, was bedeutet, dass zwei Dateien byteweise identisch sein müssen.
Wenn ein aufgelisteter ETag
das Präfix W/
hat, was einen schwachen Entitätstag anzeigt, wird dieser Vergleichsalgorithmus niemals einen Treffer erzielen.
Es gibt zwei gängige Anwendungsfälle:
- Für
GET
- undHEAD
-Methoden kann in Kombination mit einemRange
-Header garantiert 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 Lost-Update-Problem zu verhindern. Es kann überprüft werden, ob die Änderung einer Ressource, die der Benutzer hochladen möchte, nicht eine andere Änderung überschreibt, die seit dem Abrufen der ursprünglichen Ressource stattgefunden hat.
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 Zeichenkette von 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 byteweise repräsentieren. In einemIf-Match
-Header werden schwache Entitätstags jedoch niemals übereinstimmen. *
-
Der Asterisk ist ein spezieller Wert, der jede Ressource repräsentiert. Beachten Sie, dass dies als
false
übereinstimmen 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
kontextabhängige Request-Header412 Precondition Failed