HTTP ETag

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springenZur Suche springen

ETag (fürentity tag, etwa ‚Entitäts-Kennzeichen‘) ist ein imHTTP 1.1 eingeführtesHeader-Feld. Es dient zur Bestimmung von Änderungen an der angefordertenRessource und wird hauptsächlich zumCaching, also der Vermeidung redundanter Datenübertragungen, verwendet.

Inhaltsverzeichnis

Spezifikation

[Bearbeiten |Quelltext bearbeiten]
Beispiel HTTP Header

Der ETag-Wert ist eine beliebige von Anführungszeichen umschlossene Zeichenkette, die zusätzlich durch das Präfix „W/“ als schwaches ETag gekennzeichnet werden kann. Die spezifizierendeBNF dazu:

ETag = "ETag" ":" entity-tagentity-tag = [ weak ] opaque-tagweak       = "W/"opaque-tag = quoted-string
Starker ETag
Ein starker ETag darf nur dann von mehreren Entitäten einer Ressource geführt werden, falls diese absolut identisch (Bit für Bit) sind.
Schwacher ETag
Ein schwacher ETag (durch „W/“-Präfix gekennzeichnet) darf von mehreren Entitäten einer Ressource geführt werden, falls diese zueinander äquivalent sind, sich also semantisch nicht signifikant unterscheiden.

Häufig basiert die Generierung des ETag-Werts auf demHash des Inhalts der Ressource oder dem Zeitpunkt der letzten Änderung.

Ablauf

[Bearbeiten |Quelltext bearbeiten]

Bei der ersten Anfrage einer Ressource sendet derServer einen für diese Ressource spezifischen ETag-Wert imETag-Header-Feld, der vomClient zusammen mit der Ressource lokal gespeichert wird. (Abb. 1)Bei einer erneuten Anfrage derselben Ressource sendet der Client in dem Header-FeldIf-None-Match den zuvor gespeicherten ETag-Wert mit. (Abb. 2)Auf derServer-Seite wird nun der gesendete ETag-Wert mit dem aktuellen verglichen und bei Übereinstimmung mit demStatuscode304 beantwortet. (Abb. 3) Die Daten der Ressource werden in diesem Fall nicht mitgeschickt und der Client verwendet die lokal gespeicherten Daten.

Probleme

[Bearbeiten |Quelltext bearbeiten]

Bei ungeschickter Implementierung kann sich der ETag negativ auswirken: Wenn der ETag zum Beispiel aus derInode des auszuliefernden Dokuments generiert wird, ist dieser Wert nur auf diesem System gültig. Wird das Dokument nun von mehreren Servern ausgeliefert (z. B. zwecksServer-Lastverteilung), so kann eine erneute Anfrage des Clients von einem anderen Server mit einem anderen ETag-Wert verarbeitet werden, was wiederum die Übertragung derselben Datei trotz ETags zur Folge hat. Aus diesem Grund wird empfohlen, die Inode bei der Generierung des ETag-Werts nicht zu verwenden.

Zur Generierung des ETags sollte beispielsweise einHashwert über den Inhalt der Datei oder eine eindeutige Versionsnummer der Datei verwendet werden.

Zudem können Anwender mittels ETag identifiziert werden, wenn ein Webserver client-individuelle ETags generiert.[1][2]

Weblinks

[Bearbeiten |Quelltext bearbeiten]
  • RFC:2616 –Hypertext Transfer Protocol – HTTP/1.1. Juni 1999, Abschnitt 14.19:ETag. (englisch).
  • FileETag-Direktive. Apache-HTTP-Server-Dokumentation.
  • etag.use-inode. lighttpd-Server-Dokumentation.
  • ETag-Checker – Ein kostenloser Checker, der die korrekte Konfiguration des ETags kontrollieren kann.

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. Nicht löschbarer Cookie erlaubt Browser-Identifikation. teltarif.de; abgerufen am 26. November 2013
  2. User-Tracking im Web: Forscher warnt vor heimtückischer Tracking-Technik. heise.de; abgerufen am 29. November 2013
Abgerufen von „https://de.wikipedia.org/w/index.php?title=HTTP_ETag&oldid=248897149
Kategorie: