Von RFC2616:
Diese Methode (HEAD) kann zur Gewinnung von Metainformation über die Entität durch die Anforderung selbst die Entität Körper übertragen, ohne implizierten verwendet werden. Diese Methode wird oft zum Testen von Hypertext-Links auf Gültigkeit, Accessibility und aktuellen Modifikation verwendet.
Der Grund, warum HEAD bevorzugt wird, ist auf das Fehlen des Nachrichtentexts in der Antwort, die er in Szenarien machen aufgrund wo Sie, wenn der Inhalt überhaupt geändert hat, um bestimmen wollen - eine Änderung in der letzten Änderung Zeit oder Inhaltslänge bedeutet dies normalerweise.
Auch eine HEAD-Anfrage wird einige Informationen über das Server-Setup (ob es IIS/Apache etc. ist), sofern der Server nicht maskiert wurde; Natürlich ist dies in allen Antworten verfügbar, aber HEAD wird bevorzugt, wenn Sie die Größe der Antwort nicht kennen. HEAD ist auch der einfachste Weg, um festzustellen, ob eine Site hoch oder runter ist. Wiederum macht die Irrelevanz des Nachrichtenkörpers HEAD zum idealen Kandidaten.
Ich bin mir nicht sicher, aber RSS/ATOM-Feed-Leser würden HEAD über GET verwenden, um festzustellen, ob sich der Inhalt des Feeds geändert hat.
Um ein Beispiel hinzuzufügen: Ich baue eine "Kunden" API, die Daten zu mehreren Anwendungen über eine REST API bereitstellt. Die Apps möchten regelmäßig überprüfen, ob der Kunde aktualisiert wurde, aber wir möchten nicht alle DB-Joins durchführen oder den gesamten Kunden erneut über die Leitung senden. Stattdessen haben wir wiederholt die API mit einer HEAD-Anfrage bei/customer/XYZ aufgerufen, um uns mitzuteilen, wann es zuletzt eine Änderung gegeben hat. –
Möchten Sie ein weiteres Beispiel hinzufügen, obwohl dies ein alter Beitrag ist. ElasticSearch empfiehlt die Verwendung von HEAD-Befehlen, wenn Sie sehen möchten, ob ein Dokument existiert. –
Sie verwenden HEAD nicht, um zu sehen, ob sich ein Dokument geändert hat. Sie verwenden 'If-Modified-Since' oder' If-None-Match' (z. B. in Ihrem Browser-Netzwerkprotokoll nach "304 Not Modified" -Antworten) diese Seite neu laden). Und HEAD ist (zumindest theoretisch) vollständig redundant ab HTTP/1.1, was 'Range: bytes = 0-0' erlaubt. –