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 und HEAD, in Kombination mit einem Range-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, kann If-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

http
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 durch W/ vorangestellt werden, um anzuzeigen, dass sie "schwach" sind, d. h., dass sie die Ressource semantisch, aber nicht byteweise repräsentieren. In einem If-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

http
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