2012-08-01 15 views
7

¿Hay encabezados que puede enviar con una solicitud HTTP que le dice al servidor web que le envíe únicamente encabezados en respuesta y sin contenido corporal?¿Está enviando una solicitud HTTP que le dice al servidor que devuelva solo encabezados y sin cuerpo?

Estoy usando cURL para hacer tales solicitudes, pero técnicamente asumo que debería ser posible con un encabezado simple que se envía como parte de la solicitud.

Por ejemplo, existe un código de respuesta HTTP 304 no modificado. Cuando realiza una solicitud al servidor con su etiqueta de caché o información de fecha y hora, el servidor puede detectar eso y solo devolver encabezados como una respuesta que le dice al agente de usuario que use su caché como respuesta. Esto significa que la respuesta del servidor es muy, muy pequeña cuando se trata del ancho de banda.

¿Pero hay un encabezado que puede enviar a los servidores que hacen que el servidor solo devuelva un encabezado y sin contenido corporal?

La idea aquí es realizar solicitudes HTTP que de lo contrario podrían devolver una gran cantidad de datos, muy pequeños. Como una llamada API que devolvería datos JSON o un registro, cuando en realidad lo único que le interesa al agente de usuario es asegurarse de que la solicitud se haya procesado y nada más. Esto es para minimizar el ancho de banda hacia y desde el servidor en los casos donde el cuerpo podría existir, pero no es necesario de ninguna manera en contexto con lo que está haciendo el agente de usuario.

Si bien sería posible diseñar una API que escuche un encabezado personalizado específico o lo que sea, prefiero no ir de esta manera a menos que sea necesario. Pero no he podido encontrar si hay una forma estandarizada de hacer una solicitud HTTP que le indique al servidor que no envíe ningún contenido físico.

Respuesta

14

Si el servidor lo admite, existe la acción HEAD (en lugar de GET o POST). Eso le dice al servidor que solo envíe los encabezados y ningún cuerpo.

El método HEAD es idéntico a GET, excepto que el servidor NO DEBE devolver un mensaje-cuerpo en la respuesta.

2

Está buscando el verbo HEAD. Si está utilizando CURL con PHP, esto va a hacer el truco:

curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($c, CURLOPT_CUSTOMREQUEST, 'HEAD'); 
curl_setopt($c, CURLOPT_HEADER, 1); 
curl_setopt($c, CURLOPT_NOBODY, true); 

Si está usando PHP, aunque (y muy bien puede también contar en diferentes situaciones), el script continuará ejecutándose until any output is sent (la nota bajo REQUEST_METHOD). Entonces, si le preocupa el estrés del servidor, es posible que necesite algo más si eso le sirve.

Para mí, parece que estás más buscando un 'ping', así que ¿por qué no simplemente solicitar un archivo que no hace más que devolver un OK, quizás incluso el HTTP 200 OK (es decir, un archivo vacío)?

+0

Estaba buscando la solicitud HEAD, sí. Estaba buscando principalmente una manera de reducir el ancho de banda, no el estrés del servidor a partir de la generación de contenido (lo manejaré de manera diferente). Solo buscaba una forma estandarizada en lugar de alguna regla o parámetro API que lo haga posible. ¡Pero gracias! – kingmaple

Cuestiones relacionadas