2013-11-01 21 views
5

Nach dem RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html:HTTP HEAD Verb Statuscode

Die HEAD-Methode ist identisch mit der Ausnahme zu erhalten, muss der Server eine Nachricht-Körper in der Antwort nicht zurück. Die Metainformationen, die in den HTTP-Headern als Reaktion auf eine HEAD-Anfrage enthalten sind, SOLLTEN identisch mit den Informationen sein, die als Antwort auf eine GET-Anfrage gesendet werden. Diese Methode kann verwendet werden, um Metainformationen über die von der Anfrage implizierte Entität zu erhalten, ohne den Entity-Body selbst zu übertragen. Diese Methode wird häufig zum Testen von Hypertext-Links auf Gültigkeit, Zugänglichkeit und letzte Änderung verwendet.

Die Antwort auf eine HEAD-Anfrage kann in dem Sinne cachefähig sein, dass die in der Antwort enthaltenen Informationen verwendet werden können, um eine zuvor zwischengespeicherte Entität von dieser Ressource zu aktualisieren. Wenn die neuen Feldwerte angeben, dass sich die zwischengespeicherte Entität von der aktuellen Entität unterscheidet (wie durch eine Änderung in Content-Length, Content-MD5, ETag oder Last-Modified angezeigt wird), muss der Cache den Cache-Eintrag als veraltet behandeln.

Aus dieser Definition sollten wir 200 wie die entsprechenden GET-Aktion zurück, der sollten wir 204 zurückkehren, weil es keinen Inhalt ist?

Persönlich denke ich, die bessere Interpretation wäre 204 Statuscode zu verwenden. Was ist deine Interpretation?

+0

Scheint klar genug: Wenn Ihr GET '200' zurückgeben würde, geben Sie 200 für einen' HEAD' zurück. Wenn Ihr "GET" 204 zurückgibt, geben Sie 204 zurück. Was ist das Problem? –

+1

Das Problem ist das folgende: die 'GET' Aktion sollte nicht' 204' zurückgeben, denn wenn eine Ressource/Sammlung existiert, dann ist ein Inhalt vorhanden. Da der 'HEAD'-Inhalt jedoch null sein muss, lautet der Statuscode' 204'. Übrigens, beachte diesen _SHOULD_ Begriff aus der Definition: _eine HEAD Anfrage ** SOLLTE ** identisch mit der Information sein, die als Antwort auf eine GET Anfrage gesendet wurde. So kann dieser andere Statuscode der einzige Unterschied zwischen 'GET' und 'HEAD' sein Kopfzeilen. – Doug

+0

Ja, die Absicht von 204 stimmt nicht mit dem Titel "Kein Inhalt" überein. IMO, es ist schlecht betitelt, aber ich bezweifle, dass ich mir etwas besseres einfallen lassen würde. – aaaaaa

Antwort

7

Siehe Section 10, die die Statuscodes beschreibt. Die Beschreibung des Codes 200 enthält Beispiele und sie umfassen HEAD. So offensichtlich haben sie vor, dass die HEAD Anfrage diesen Code zurückgeben sollte.

Die Beschreibung 204 erklärt den Zweck:

Diese Antwort in erster Linie Eingabe zu ermöglichen, ist für zu ergreifende Maßnahmen für eine Änderung des aktiven Dokumentansicht des User-Agent, obwohl jede neue oder aktualisierte stattzufinden, ohne dass Metainformationen auf das Dokument angewendet werden, das sich derzeit in der aktiven Ansicht des Benutzeragenten befindet.

+0

Mein Fehler ... Danke für die Antwort. – Doug