2009-09-22 26 views

Respuesta

47

De RFC2616:

Este método (cabeza) puede ser utilizado para la obtención de metainformación acerca de la entidad implicado por la solicitud sin la transferencia de la entidad-cuerpo mismo. Este método se utiliza a menudo para probar los enlaces de hipertexto para la validez, el acceso y la modificación reciente .

La razón por la cual se prefiere cabeza para conseguir es debido a la ausencia del cuerpo del mensaje en la respuesta por lo que es el uso en escenarios en los que se desea determinar si el contenido ha cambiado en absoluto - un cambio en la modificada por última vez el tiempo o la duración del contenido generalmente lo indica.

Además, una solicitud HEAD proporcionará información acerca de la configuración del servidor (si es IIS/Apache, etc.), a menos que el servidor esté enmascarado; por supuesto, esto está disponible en todas las respuestas, pero se prefiere HEAD especialmente cuando no se conoce el tamaño de la respuesta. HEAD es también la forma más fácil de determinar si un sitio está activo o inactivo; nuevamente, la irrelevancia del cuerpo del mensaje hace que HEAD sea el candidato ideal.

No estoy seguro de esto, pero los lectores de feeds RSS/ATOM usarían HEAD sobre GET para determinar si el contenido del feed ha cambiado.

+2

Para agregar un ejemplo: estoy creando una API de "clientes" que sirve datos a varias aplicaciones a través de una API REST. Las aplicaciones querrán verificar regularmente si el cliente se ha actualizado, pero no queremos hacer todas las combinaciones de DB o seguir reenviando a todo el cliente a través del cable. En cambio, repetidamente pulsamos la API con una solicitud HEAD en/customer/XYZ, haciéndonos saber cuándo ha habido un cambio por última vez. –

+0

Quiere agregar otro ejemplo, aunque esta es una publicación anterior. ElasticSearch recomienda usar comandos HEAD si desea ver si existe un documento. –

+0

No utiliza HEAD para ver si un documento ha cambiado, usa 'If-Modified-Since' o' If-None-Match' (por ejemplo, consulte el registro de red de su navegador para respuestas "304 Not Modified" mientras recargando esta página). Y HEAD es (al menos teóricamente) completamente redundante a partir de HTTP/1.1, que permite 'Rango: bytes = 0-0'. –

3

Es principalmente para navegadores y servidores proxy para determinar si pueden usar una copia almacenada en caché del documento web sin tener que descargar todo (lo que más bien frustraría el propósito de un caché).

+7

¿Alguno de los navegadores actuales hace esto? Pensé que solo utilizarían un "GET" pero incluirían un encabezado de solicitud "If-Modified-Since". – David

+0

Dunno. Por lo que puedo ver en Tamper Data, Firefox seguro que no. Supongo que sería más útil cuando hay más criterios que el tiempo de modificación involucrado, que serían más proxies que los navegadores. – chaos

+0

David tiene razón, a menos que haya un navegador que haga esto.Es desventajoso ya que la respuesta indicará si el cliente debe descargar el contenido o no, lo que resulta en 2 solicitudes en lugar de una. Sin embargo, probablemente sea útil para otros clientes HTTP. –

22

HTTP HEAD también se puede usar para preautenticar en el servidor web, antes de hacer HTTP PUT/POST de algunos datos de gran tamaño. Sin la primera solicitud HEAD, estarías enviando los datos grandes al servidor web dos veces (porque la primera solicitud devolvería 401 respuestas no autorizadas con el encabezado WWW-authenticate).

Cuestiones relacionadas