2009-09-22 12 views

risposta

47

Da RFC2616:

Questo metodo (HEAD) può essere utilizzato per ottenere metainformation sull'entità implicita la richiesta senza trasferire l'entità-corpo stesso. Questo metodo viene spesso utilizzato per il test dei collegamenti ipertestuali per la validità, l'accessibilità e la recente modifica .

Il motivo per cui HEAD si preferisce ottenere è per l'assenza del corpo del messaggio nella risposta che rende l'utilizzo in scenari in cui si desidera determinare se il contenuto è cambiato affatto - un cambiamento nel dell'ultima modifica il tempo o la lunghezza del contenuto di solito significa questo.

Inoltre, una richiesta HEAD fornirà alcune informazioni sulla configurazione del server (che si tratti di IIS/Apache ecc.), A meno che il server non sia stato mascherato; naturalmente, questo è disponibile in tutte le risposte, ma HEAD è preferito soprattutto quando non si conosce la dimensione della risposta. HEAD è anche il modo più semplice per determinare se un sito è attivo o inattivo; ancora una volta l'irrilevanza del corpo del messaggio fa di HEAD il candidato ideale.

Non sono sicuro, ma i lettori di feed RSS/ATOM utilizzerebbero HEAD over GET per verificare se il contenuto del feed è cambiato.

+2

Per aggiungere un esempio: sto creando un'API "clienti" che fornisce dati a più app su un'API REST. Le app vorranno controllare regolarmente per vedere se il cliente è stato aggiornato, ma non vogliamo fare tutti i join del DB o continuare a inviare di nuovo l'intero cliente via cavo. Invece, abbiamo ripetutamente colpito l'API con una richiesta HEAD in/customer/XYZ, facendoci sapere quando c'è stata una variazione. –

+0

Vuoi aggiungere un altro esempio, anche se questo è un vecchio post. ElasticSearch consiglia di utilizzare i comandi HEAD se vuoi vedere se esiste un documento. –

+0

Non usi HEAD per vedere se un documento è cambiato, usi 'If-Modified-Since' o' If-None-Match' (es. Dai un'occhiata nel registro di rete del browser per le risposte "304 Not Modified" mentre ricaricando questa pagina). E HEAD è (almeno teoricamente) completamente ridondante a partire da HTTP/1.1, che consente 'Range: byte = 0-0'. –

3

Principalmente per i browser e i proxy è possibile determinare se possono utilizzare una copia memorizzata nella cache del documento Web senza dover scaricare l'intera operazione (il che equivarrebbe a vanificare lo scopo di una cache).

+7

I browser correnti fanno questo? Pensavo che avrebbero usato solo un "GET" ma includevano un'intestazione di richiesta "Se modificato-Dal". – David

+0

Dunno. Da quello che posso vedere in Tamper Data, Firefox no. Suppongo che sarebbe più utile quando ci sono più criteri rispetto al tempo di modifica, che sarebbero più proxy rispetto ai browser. – chaos

+0

David ha ragione, a meno che non ci sia un browser che lo faccia.È svantaggioso in quanto la risposta indicherà se il client deve scaricare o meno il contenuto, risultando in 2 richieste invece di una. Probabilmente è utile per altri client HTTP. –

22

L'HEAD HTTP può essere utilizzato anche per la pre-autenticazione sul server Web, prima di eseguire il PUT/POST HTTP di alcuni dati di grandi dimensioni. Senza la prima richiesta HEAD, invierai i dati di grandi dimensioni al server web due volte (perché la prima richiesta restituirebbe 401 risposte non autorizzate con l'intestazione dell'autenticazione WWW).

Problemi correlati