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 en el 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 solicitud.
  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 un mandato de una palabra que indica al servidor lo que debe hacer con el recurso. Por ejemplo, se podría solicitar al servidor que envíe el recurso al cliente.
  2. El componente de ruta de la URL de la solicitud. La vía de acceso 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 una línea de solicitud es:
GET /software/htp/cics/index.html HTTP/1.1
En este ejemplo:
  • el método es GET
  • la vía de acceso 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 serie de consulta. Esto proporciona una serie de información que el recurso puede utilizar para alguna finalidad. Sigue la vía de acceso y va precedida 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 el formato URI absoluto . 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, las siguientes series de cabeceras se pueden utilizar 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 entidad es el contenido real del mensaje. El cuerpo del mensaje contiene el cuerpo de entidad, que puede estar en su estado original, o se puede codificar de alguna manera para el transporte, como por ejemplo dividiendo en fragmentos (código de transferencia fragmentado). El cuerpo del mensaje de una solicitud puede ser referido por conveniencia como un cuerpo de 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 solicitud con el método GET, que solicita al servidor que envíe un recurso, no tiene un cuerpo de mensaje.