If-None-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-None-Match Request-Header macht eine Anfrage konditional.
Der Server gibt die angeforderte Ressource in GET- und HEAD-Methoden mit einem 200-Status zurück, nur wenn er keinen ETag hat, der mit denen im If-None-Match-Header übereinstimmt.
Für andere Methoden wird die Anfrage nur verarbeitet, wenn der eventuell vorhandene Ressource-ETag mit keinem der aufgelisteten Werte übereinstimmt.
Wenn die Bedingung für die GET- und HEAD-Methoden fehlschlägt, muss der Server einen 304 Not Modified zurückgeben und alle der folgenden Header-Felder, die in einer 200-Antwort auf dieselbe Anfrage gesendet worden wären: Cache-Control, Content-Location, Date, ETag, Expires, und Vary.
Für Methoden, die serverseitige Änderungen betreffen, wird der 412 Precondition Failed verwendet, wenn die Bedingung fehlschlägt.
Der Vergleich mit dem gespeicherten ETag verwendet den schwachen Vergleichsalgorithmus, was bedeutet, dass zwei Dateien als identisch betrachtet werden, wenn der Inhalt gleichwertig ist — sie müssen nicht byteweise identisch sein. Zum Beispiel würden zwei Seiten, die sich nur durch ihr Erstellungsdatum im Fußbereich unterscheiden, dennoch als identisch betrachtet werden.
Wenn If-None-Match in Kombination mit If-Modified-Since verwendet wird, hat If-None-Match Vorrang, wenn der Server es unterstützt.
Es gibt zwei häufige Anwendungsfälle für die Verwendung von If-None-Match in Anfragen:
- Für
GET- undHEAD-Methoden, um eine zwischengespeicherte Entität zu aktualisieren, die über einen zugeordneten ETag verfügt. - Für andere Methoden, insbesondere für
PUT, kannIf-None-Matchmit dem Wert*verwendet werden, um eine Datei nur dann zu speichern, wenn sie noch nicht existiert. Dies garantiert, dass das Hochladen nicht versehentlich ein anderes Hochladen überschreibt und die Daten des vorherigenPUTverliert; dieses Problem ist eine Variante des Lost-Update-Problems.
| Headertyp | Request-Header |
|---|---|
| Verbotener Header-Name | Nein |
Syntax
If-None-Match: "<etag_value>"
If-None-Match: "<etag_value>", "<etag_value>", …
If-None-Match: *
Direktiven
<etag_value>-
Entity-Tags, die die angeforderten Ressourcen eindeutig repräsentieren. Es sind Zeichenfolgen aus ASCII-Zeichen, die in Anführungszeichen stehen (wie
"675af34563dc-tr34") und können mitW/vorangestellt werden, um anzuzeigen, dass der schwache Vergleichsalgorithmus verwendet werden sollte (dies ist beiIf-None-Matchnutzlos, da es nur diesen Algorithmus verwendet). *-
Der Stern ist ein spezieller Wert, der jede Ressource darstellt. Sie sind nur nützlich beim Hochladen einer Ressource, normalerweise mit
PUT, um zu überprüfen, ob eine andere Ressource mit der Identität bereits zuvor hochgeladen wurde.
Beispiele
If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"
If-None-Match: W/"67ab43", "54ed21", "7892dd"
If-None-Match: *
Spezifikationen
| Specification |
|---|
| HTTP Semantics # field.if-none-match |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
ETagIf-Match,If-Modified-Since,If-Unmodified-Sincekonditionale Request-Header304 Not Modified,412 Precondition FailedAntwortstatuscodes