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 gibt Ressourcen für die Methoden GET und HEAD zurück 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. Wenn die Bedingung nicht erfüllt ist, wird stattdessen die 412 Precondition Failed-Antwort zurückgegeben.

Der Vergleich mit dem gespeicherten ETag verwendet den starken Vergleichsalgorithmus, was bedeutet, dass zwei Dateien byteweise identisch sein müssen. Wenn ein aufgelistetes ETag das Präfix W/ hat, das einen schwachen Entitätstag anzeigt, wird dieser Vergleichsalgorithmus niemals übereinstimmen.

Es gibt zwei häufige Anwendungsfälle:

  • Für die Methoden GET und HEAD, die in Kombination mit einem Range-Header verwendet werden, kann sichergestellt werden, dass die neu angeforderten Bereiche von derselben Ressource stammen wie der vorherige.
  • Für andere Methoden, insbesondere für PUT, kann If-Match verwendet werden, um das Problem des verlorenen Updates zu verhindern. Es kann überprüft werden, ob die Änderung einer Ressource, die der Benutzer hochladen möchte, keine andere Änderung überschreibt, die seit dem Abrufen der ursprünglichen Ressource vorgenommen wurde.
Header-Typ Request-Header
Verbotener Request-Header Nein

Syntax

http
If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …

Direktiven

<etag_value>

Entitätstags, die die angeforderten Ressourcen eindeutig darstellen. Es handelt sich um eine Zeichenfolge von ASCII-Zeichen, die zwischen Anführungszeichen gesetzt sind (zum Beispiel "675af34563dc-tr34"). Sie können mit W/ versehen werden, um anzuzeigen, dass sie 'schwach' sind, d.h. dass sie die Ressource semantisch, aber nicht byteweise darstellen. In einem If-Match-Header werden schwache Entitätstags jedoch niemals übereinstimmen.

*

Der Stern ist ein spezieller Wert, der jede Ressource darstellt. Beachten Sie, dass dies als false übereinstimmen muss, wenn der Origin-Server keine aktuelle Darstellung für die Zielressource hat.

Beispiele

http
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"

If-Match: "67ab43", "54ed21", "7892dd"

If-Match: *

Spezifikationen

Specification
HTTP Semantics
# field.if-match

Browser-Kompatibilität

Siehe auch