If-None-Match

Der If-None-Match HTTP-Anforderungsheader macht die Anfrage bedingt. Für die Methoden GET und HEAD gibt der Server die angeforderte Ressource mit einem Status von 200 nur zurück, wenn er keinen ETag hat, der zu den angegebenen passt. Für andere Methoden wird die Anfrage nur bearbeitet, wenn der gegebenenfalls vorhandene ETag der Ressource mit keinem der aufgeführten Werte übereinstimmt.

Wenn die Bedingung für die Methoden GET und HEAD fehlschlägt, muss der Server den HTTP-Statuscode 304 (Not Modified) zurückgeben. Für Methoden, die serverseitige Änderungen bewirken, wird der Statuscode 412 (Precondition Failed) verwendet. Beachten Sie, dass der Server, der eine 304-Antwort generiert, eines der folgenden Header-Felder generieren MUSS, die in einer 200 (OK) Antwort auf dieselbe Anfrage gesendet worden wären: Cache-Control, Content-Location, Date, ETag, Expires und Vary.

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 lediglich durch ihr Erstellungsdatum im Fußzeilenbereich unterscheiden, immer noch als identisch betrachtet.

In Kombination mit If-Modified-Since verwendet, hat If-None-Match Vorrang (sofern der Server dies unterstützt).

Es gibt zwei häufige Anwendungsfälle:

  • Für die Methoden GET und HEAD wird ein zwischengespeichertes Element aktualisiert, das mit einem ETag verknüpft ist.
  • Für andere Methoden, insbesondere für PUT, kann If-None-Match mit dem Wert * verwendet werden, um eine nicht bekannte Datei zu speichern, was garantiert, dass kein weiterer Upload zuvor stattgefunden hat und die Daten des vorherigen Uploads nicht verloren gingen; dieses Problem ist eine Variante des Lost-Update-Problems.
Header-Typ Anforderungsheader
Verbotener Header-Name nein

Syntax

http
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 darstellen. Sie sind eine Zeichenfolge von ASCII-Zeichen, die zwischen Anführungszeichen gesetzt sind (wie "675af34563dc-tr34") und können mit W/ vorangestellt werden, um anzuzeigen, dass der schwache Vergleichsalgorithmus verwendet werden soll (dies ist bei If-None-Match nutzlos, da es nur diesen Algorithmus verwendet).

*

Das Sternchen ist ein spezieller Wert, der jede Ressource darstellt. Sie sind nur nützlich, wenn eine Ressource hochgeladen wird, normalerweise mit PUT, um zu überprüfen, ob eine andere Ressource mit derselben Identität bereits zuvor hochgeladen wurde.

Beispiele

http
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