HTTP: solicitudes

Un cliente HTTP envía una solicitud HTTP a un servidor en forma de mensaje de solicitud que incluye el siguiente formato:


     
  • A Request-line
  • Zero or more header (General|Request|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Las siguientes secciones explican cada una de las entidades utilizadas en un mensaje de solicitud HTTP.

Línea de solicitud

Request-Line comienza con un token de método, seguido del Request-URI y la versión del protocolo, y termina con CRLF. Los elementos están separados por caracteres SP de espacio.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

Analicemos cada una de las partes mencionadas en la Línea de solicitud.

Método de solicitud

La solicitud method indica el método a realizar en el recurso identificado por el dado Request-URI. El método distingue entre mayúsculas y minúsculas y siempre debe mencionarse en mayúsculas. La siguiente tabla enumera todos los métodos admitidos en HTTP / 1.1.

SN Método y descripción
1 GET

El método GET se usa para recuperar información del servidor dado usando un URI dado. Las solicitudes que utilizan GET solo deben recuperar datos y no deben tener ningún otro efecto en los datos.

2 HEAD

Igual que GET, pero transfiere solo la línea de estado y la sección de encabezado.

3 POST

Una solicitud POST se utiliza para enviar datos al servidor, por ejemplo, información del cliente, carga de archivos, etc. utilizando formularios HTML.

4 PUT

Reemplaza todas las representaciones actuales del recurso de destino con el contenido cargado.

5 DELETE

Elimina todas las representaciones actuales del recurso de destino proporcionadas por URI.

6 CONNECT

Establece un túnel al servidor identificado por un URI determinado.

7 OPTIONS

Describa las opciones de comunicación para el recurso de destino.

8 TRACE

Realiza una prueba de bucle de mensajes junto con la ruta al recurso de destino.

Solicitud-URI

El Request-URI es un identificador uniforme de recursos e identifica el recurso sobre el cual aplicar la solicitud. A continuación se muestran los formularios más utilizados para especificar un URI:

Request-URI = "*" | absoluteURI | abs_path | authority
 
SN Método y descripción
1 El asterisco *se utiliza cuando una solicitud HTTP no se aplica a un recurso en particular, sino al servidor mismo, y solo se permite cuando el método utilizado no se aplica necesariamente a un recurso. Por ejemplo:

OPTIONS * HTTP/1.1

2 los absoluteURIse utiliza cuando se realiza una solicitud HTTP a un proxy. Se solicita al proxy que reenvíe la solicitud o el servicio desde un caché válido y devuelva la respuesta. Por ejemplo:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3 La forma más común de Request-URI es la que se usa para identificar un recurso en un servidor de origen o puerta de enlace. Por ejemplo, un cliente que desee recuperar un recurso directamente del servidor de origen crearía una conexión TCP al puerto 80 del host "www.w3.org" y enviaría las siguientes líneas:

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

Tenga en cuenta que la ruta absoluta no puede estar vacía; si no hay ninguno presente en el URI original, DEBE indicarse como "/" (la raíz del servidor).

Campos de encabezado de solicitud

Estudiaremos General-header y Entity-header en un capítulo separado cuando aprendamos los campos de encabezado HTTP. Por ahora, verifiquemos qué son los campos de encabezado de solicitud.

Los campos de encabezado de solicitud permiten al cliente pasar información adicional sobre la solicitud y sobre el cliente mismo al servidor. Estos campos actúan como modificadores de solicitud.Aquí hay una lista de algunos campos de encabezado de solicitud importantes que se pueden usar según el requisito:

  • Accept-Charset

  • Accept-Encoding

  • Accept-Language

  • Authorization

  • Expect

  • From

  • Host

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • Proxy-Authorization

  • Range

  • Referer

  • TE

  • User-Agent

Puede introducir sus campos personalizados en caso de que vaya a escribir su propio cliente y servidor web personalizados.

Ejemplos de mensaje de solicitud

Ahora pongámoslo todo junto para formar una solicitud HTTP para obtener hello.htm página desde el servidor web que se ejecuta en tutorialspoint.com

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Aquí no enviamos ningún dato de solicitud al servidor porque estamos obteniendo una página HTML simple del servidor. La conexión es un encabezado general y el resto de los encabezados son encabezados de solicitud. El siguiente ejemplo muestra cómo enviar datos de formulario al servidor utilizando el cuerpo del mensaje de solicitud:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

licenseID=string&content=string&/paramsXML=string

Aquí, la URL dada /cgi-bin/process.cgi se utilizará para procesar los datos pasados ​​y, en consecuencia, se devolverá una respuesta. aquícontent-type le dice al servidor que los datos transmitidos son datos de un formulario web simple y lengthserá la longitud real de los datos incluidos en el cuerpo del mensaje. El siguiente ejemplo muestra cómo puede pasar XML sin formato a su servidor web:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>