6. Precedence (Priorität)
Wenn mehr als ein bedingtes Anfrage-Header-Feld in einer Anfrage vorhanden ist, wird die Reihenfolge, in der die Felder bewertet werden, wichtig. In der Praxis werden die in diesem Dokument definierten Felder konsistent in einer einzigen, logischen Reihenfolge implementiert, da "verlorene Aktualisierungs"-Vorbedingungen strengere Anforderungen haben als Cache-Validierung, und ein Entity-Tag als genauer als ein Datumswert angenommen wird.
Ein Empfänger-Cache oder Ursprungsserver MUSS die von dieser Spezifikation definierten Anfragevorbedingungen in der folgenden Reihenfolge bewerten:
-
Wenn der Empfänger der Ursprungsserver ist und
If-Matchvorhanden ist, bewerte dieIf-MatchVorbedingung:- wenn true, fahre mit Schritt 3 fort
- wenn false, antworte mit 412 (Precondition Failed), es sei denn, es kann festgestellt werden, dass die zustandsändernde Anfrage bereits erfolgreich war (siehe Abschnitt 3.1)
-
Wenn der Empfänger der Ursprungsserver ist,
If-Matchnicht vorhanden ist undIf-Unmodified-Sincevorhanden ist, bewerte dieIf-Unmodified-SinceVorbedingung:- wenn true, fahre mit Schritt 3 fort
- wenn false, antworte mit 412 (Precondition Failed), es sei denn, es kann festgestellt werden, dass die zustandsändernde Anfrage bereits erfolgreich war (siehe Abschnitt 3.4)
-
Wenn
If-None-Matchvorhanden ist, bewerte dieIf-None-MatchVorbedingung:- wenn true, fahre mit Schritt 5 fort
- wenn false für GET/HEAD, antworte mit 304 (Not Modified)
- wenn false für andere Methoden, antworte mit 412 (Precondition Failed)
-
Wenn die Methode GET oder HEAD ist,
If-None-Matchnicht vorhanden ist undIf-Modified-Sincevorhanden ist, bewerte dieIf-Modified-SinceVorbedingung:- wenn true, fahre mit Schritt 5 fort
- wenn false, antworte mit 304 (Not Modified)
-
Wenn die Methode GET ist und sowohl
Rangeals auchIf-Rangevorhanden sind, bewerte dieIf-RangeVorbedingung:- wenn true und die Range-Spezifikation auf die ausgewählte Darstellung anwendbar ist, antworte mit 206 (Partial Content) [RFC7233]
- andernfalls ignoriere das Range-Header-Feld und antworte mit 200 (OK)
-
Andernfalls,
- führe die angeforderte Methode aus und antworte entsprechend ihrem Erfolg oder Misserfolg.
Jede Erweiterung von HTTP, die zusätzliche bedingte Anfrage-Header-Felder definiert, sollte ihre eigene Bewertungsreihenfolge relativ zu den in diesem Dokument definierten bedingten Anfrage-Header-Feldern definieren. Die Erlaubnis für Erweiterungsfelder, die Priorität von Standard-Bedingungs-Header-Feldern neu zu definieren oder vom Bewertungsergebnis eines Standard-Feldes abhängig zu sein, würde zu mehrdeutigem oder inkonsistentem Verhalten führen.