If-Match
Der HTTP-Anforderungsheader If-Match
macht eine Anfrage bedingt.
Ein Server wird die angeforderten Ressourcen nur für die Methoden GET
und HEAD
zurückgeben oder Ressourcen für PUT
und andere nicht sichere Methoden hochladen, wenn die Ressource mit einem der aufgelisteten ETag
-Werte übereinstimmt. Wenn die Bedingung nicht erfüllt ist, wird die Antwort 412
(Precondition Failed) zurückgegeben.
Der Vergleich mit dem gespeicherten ETag
verwendet den starken Vergleichsalgorithmus, was bedeutet, dass zwei Dateien nur dann als identisch betrachtet werden, wenn sie byteweise identisch sind. Wenn ein aufgelisteter ETag
das W/
-Präfix hat, das einen schwachen Entitätstag anzeigt, wird dieser Vergleichsalgorithmus niemals übereinstimmen.
Es gibt zwei gängige Anwendungsfälle:
- Für die Methoden
GET
undHEAD
, in Kombination mit einemRange
-Header, kann es garantieren, dass die neuen angeforderten Bereiche von der gleichen Ressource stammen wie der vorherige. - Für andere Methoden, insbesondere für
PUT
, kannIf-Match
verwendet werden, um das verlorene Update-Problem zu vermeiden. Es kann überprüfen, ob die Änderung einer Ressource, die der Benutzer hochladen möchte, keine andere Änderung überschreibt, die seit dem Abrufen der ursprünglichen Ressource durchgeführt wurde.
Headertyp | 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 repräsentieren. Sie sind eine Zeichenkette aus ASCII-Zeichen, die in doppelte Anführungszeichen gesetzt sind (wie
"675af34563dc-tr34"
). Sie können durchW/
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 übereinstimmen muss, wenn der Ursprungsserver keine aktuelle Darstellung für die Zielressource hat, und zwar als
false
interpretiert wird.
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