2013-11-01 18 views
5

Secondo la RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html:codice di stato HTTP HEAD del verbo

Il metodo HEAD è identico a GET tranne che il server non deve restituire un messaggio-corpo nella risposta. La metainformazione contenuta nelle intestazioni HTTP in risposta a una richiesta HEAD DOVREBBE essere identica alle informazioni inviate in risposta a una richiesta GET. Questo metodo può essere utilizzato per ottenere la metainformazione sull'entità implicita nella richiesta senza trasferire il corpo dell'entità stessa. Questo metodo viene spesso utilizzato per testare i collegamenti ipertestuali per la validità, l'accessibilità e le modifiche recenti.

La risposta a una richiesta HEAD PU MAY essere memorizzabile nella cache nel senso che le informazioni contenute nella risposta POSSONO essere utilizzate per aggiornare un'entità memorizzata nella cache in precedenza da tale risorsa. Se i nuovi valori di campo indicano che l'entità memorizzata nella cache differisce dall'entità corrente (come sarebbe indicato da una modifica in Content-Length, Content-MD5, ETag o Last-Modified), la cache DEVE considerare la voce cache come obsoleta.

Da questa definizione, dovremmo avere a tornare 200 come la rispettiva azione GET, di dovremmo dover tornare 204 perché non v'è alcun contenuto?

Personalmente, penso che l'interpretazione migliore sarebbe quella di utilizzare il codice di stato 204. Qual è la tua interpretazione?

+0

Sembra abbastanza chiaro: se il tuo GET restituisce '200', restituisci 200 per un' HEAD'. Se il tuo 'GET' restituisce 204, si restituisce 204. Qual è il problema? –

+1

Il problema è il seguente: l'azione 'GET' non dovrebbe restituire' 204' perché se esiste una risorsa/raccolta, allora è presente un contenuto. Tuttavia, dato che il contenuto di 'HEAD' deve essere nullo, il codice di stato sarebbe '204'. A proposito, nota questo termine _SHOULD_ dalla definizione: _a richiesta HEAD ** DOVREBBE essere identica alle informazioni inviate in risposta a una richiesta GET. Quindi questo diverso codice di stato può essere l'unica differenza tra 'GET' e' HEAD' intestazioni. – Doug

+0

Sì, l'intento 204 non è in linea con il titolo "Nessun contenuto". IMO è scarsamente intitolato, ma dubito che mi verrebbe in mente qualcosa di meglio. – aaaaaa

risposta

7

Vedere Section 10, che descrive i codici di stato. La descrizione del codice 200 include esempi e include HEAD. Quindi ovviamente intendono che la richiesta HEAD debba restituire questo codice.

La descrizione 204 spiega lo scopo:

Questa risposta è principalmente destinato a consentire l'ingresso per le azioni avvengano senza causare una modifica alla visualizzazione del documento attivo della user agent, anche se qualsiasi metainformation nuovo o aggiornato deve essere applicato al documento attualmente nella vista attiva dell'agente utente.

+0

Il mio errore ... Grazie per la risposta. – Doug

Problemi correlati