solicitudes HTTP

Un cliente realiza una solicitud HTTP a un host con nombre, que se encuentra en un servidor. El objetivo de la solicitud es acceder a un recurso del servidor.

Para hacer la petición, el cliente utiliza componentes de una URL (Uniform Resource Locator), que incluye la información necesaria para acceder al recurso. Los componentes de una URL explica las URL.

Una petición HTTP correctamente compuesta contiene los siguientes elementos:
  1. Una línea de petición.
  2. Una serie de cabeceras HTTP o campos de cabecera.
  3. Un cuerpo de mensaje, si es necesario.
Cada encabezado HTTP va seguido de un salto de línea de retorno de carro (CRLF). Después de la última de las cabeceras HTTP, se utiliza un CRLF adicional (para dar una línea vacía) y, a continuación, comienza el cuerpo del mensaje.

Línea de solicitud

La línea de solicitud es la primera línea del mensaje de solicitud. Consta de al menos tres elementos:
  1. Un método. El método es una orden de una sola palabra que indica al servidor lo que debe hacer con el recurso. Por ejemplo, se puede pedir al servidor que envíe el recurso al cliente.
  2. El componente de ruta de la URL de la solicitud. La ruta identifica el recurso en el servidor.
  3. El número de versión HTTP, que muestra la especificación HTTP que el cliente ha intentado que cumpla el mensaje.
Un ejemplo de línea de solicitud es:
GET /software/htp/cics/index.html HTTP/1.1
En este ejemplo:
  • el método es GET
  • el camino es /software/htp/cics/index.html
  • la versión HTTP es HTTP/1.1
Una línea de solicitud puede contener algunos elementos adicionales:
  • Una cadena de consulta. Proporciona una cadena de información que el recurso puede utilizar para algún fin. Sigue el camino y va precedido de un signo de interrogación.
  • Los componentes scheme y host de la URL, además de la ruta. Cuando la ubicación del recurso se especifica de esta forma, se conoce como forma URI absoluta. Para HTTP/1.1, esta forma se utiliza cuando una petición va a pasar por un servidor proxy. También para HTTP/1.1, si el componente host de la URL no se incluye en la línea de solicitud, debe incluirse en el mensaje en una cabecera Host.

cabeceras HTTP

Las cabeceras HTTP se escriben en un mensaje para proporcionar al destinatario información sobre el mensaje, el remitente y la forma en que el remitente desea comunicarse con el destinatario. Cada cabecera HTTP se compone de un nombre y un valor. Las especificaciones del protocolo HTTP definen el conjunto estándar de cabeceras HTTP y describen cómo utilizarlas correctamente. Los mensajes HTTP también pueden incluir cabeceras de extensión, que no forman parte de las especificaciones HTTP/1.1 o HTTP/1.0.

Las cabeceras HTTP de la solicitud de un cliente contienen información que un servidor puede utilizar para decidir cómo responder a la solicitud. Por ejemplo, la siguiente serie de cabeceras puede utilizarse para especificar que el usuario sólo desea leer el documento solicitado en francés o alemán, y que el documento sólo debe enviarse si ha cambiado desde la fecha y hora en que el cliente lo obtuvo por última vez:
Accept-Language: fr, de
If-Modified-Since: Fri, 10 Dec 2004 11:22:13 GMT

Se coloca una línea vacía (es decir, sólo un CRLF) en el mensaje de solicitud después de la serie de cabeceras HTTP, para dividir las cabeceras del cuerpo del mensaje.

Cuerpo de mensaje

El contenido del cuerpo de cualquier mensaje HTTP puede denominarse cuerpo del mensaje o cuerpo de la entidad. Técnicamente, el cuerpo de la entidad es el contenido real del mensaje. El cuerpo del mensaje contiene el cuerpo de la entidad, que puede estar en su estado original o codificado de alguna forma para el transporte, como por ejemplo dividido en trozos (chunked transfer-coding). El cuerpo del mensaje de una solicitud puede denominarse, por comodidad, cuerpo de la solicitud.

Los cuerpos de los mensajes son apropiados para algunos métodos de solicitud e inapropiados para otros. Por ejemplo, una solicitud con el método POST, que envía datos de entrada al servidor, tiene un cuerpo de mensaje que contiene los datos. Una petición con el método GET, que solicita al servidor el envío de un recurso, no tiene cuerpo de mensaje.