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>