2013-02-14 3 views

Antwort

11

Beide repräsentieren eine Hashsumme des Nachrichtentextes.

Nicht ganz. Content-MD5 ist ein Hash, aber ETag ist eine undurchsichtige Kennung: der Client weiß nicht, was es bedeutet. Es ist wahr, dass eine Möglichkeit, eine geeignete ETag zu erzeugen, darin besteht, die Daten der Ressource zu hashen, aber es ist sicherlich nicht die einzige.

Beide können zur Überprüfung verwendet werden, wenn die Ressource seit dem letzte Mal geändert wurde es von einem bestimmten Client angefordert wurde.

Das stimmt, obwohl in beiden Fällen theoretisch sowohl falsch positive als auch falsch negative Ergebnisse erhalten werden können.

Wenn sie identische Sache tun, warum koexistieren sie in der RFC2616-Spezifikation?

Die Koexistenz, weil sie verschiedenen Zwecken dienen; "Sie tun identische Dinge" ist nicht wahr.

Content-MD5 soll den Client die Integrität der übertragenen Ressource überprüfen lassen: seine Bedeutung ist gut definiert, und es soll nicht verwendet werden, nachdem die Antwort empfangen wurde.

ETag ist für die Koordinierung der Zwischenspeicherung vorgesehen. Da es undurchsichtig ist, kann es die Semantik eines "Ressourcenidentifizierers" von seiner Mechanik entkoppeln (so kann der Server ein beliebiges Identifikationsschema verwenden, und es ist frei, dieses Schema in der Zukunft zu ändern, ohne dass die Kunden Einfluss auf den Prozess nehmen). Zusätzlich unterstützt ETagweak validation, wodurch zwei bitweise unterschiedliche Versionen einer Ressource als semantisch äquivalent behandelt werden können.