Zum Inhalt springen

Entity Tag

Ein ETag kennzeichnet eine bestimmte Darstellungsversion einer HTTP-Ressource und ermöglicht bedingte Abrufe oder Änderungen.

Auch bekannt alsETag
API und Datenverträge

Ein Entity Tag ist ein HTTP-Validator im Antwortheader ETag. Er kennzeichnet eine bestimmte Version der ausgelieferten Darstellung. Der Wert muss kein Inhalts-Hash sein. Der Client sollte ihn unverändert als Kennung verwenden, statt daraus eine Reihenfolge von Versionen abzuleiten.

Zwei bedingte Anfragen

Eine fiktive Projektübersicht antwortet mit ETag: "r7". Bei einem späteren GET mit If-None-Match: "r7" kann der Server mit 304 ohne erneuten Antwortkörper reagieren, wenn die Darstellung unverändert ist. Hat sie sich geändert, wird die neue Darstellung mit ihrem neuen Validator übertragen.

Bei einer Änderung hat dieselbe Kennung eine andere Aufgabe: Eine Bearbeitung mit If-Match: "r7" trifft inzwischen auf die aktuelle Darstellung "r8". Die nicht erfüllte Vorbedingung führt zu 412, statt den neueren Stand mit der alten Bearbeitung zu überschreiben. Die Anwendung muss diesen Konflikt sichtbar behandeln. Prüfung und Änderung müssen auf dem Server korrekt zusammenwirken; ein mitgesendeter Header allein schützt nicht.

Für If-Match gilt der starke Vergleich. Ein schwacher Validator mit dem Präfix W/ erfüllt diesen Vergleich nicht. Beim Cacheabruf und bei der Schreibprüfung werden also unterschiedliche Bedingungen verwendet. Ein ETag ersetzt außerdem keine Berechtigungsprüfung und entscheidet nicht, wer die Daten sehen oder ändern darf.

Quellen