in

HTTP: solicitudes


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


  • Una línea de solicitud
  • Cero o más campos de encabezado (General | Solicitud | Entidad) seguidos de CRLF
  • Una línea vacía (es decir, una línea sin nada antes de la CRLF) que indica el final de los campos del encabezado
  • Opcionalmente un cuerpo de mensaje
  • Las siguientes secciones explican cada una de las entidades utilizadas en un mensaje de solicitud HTTP.

    Línea de solicitud

    La línea de solicitud comienza con un token de método, seguido del URI de solicitud 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 método indica el método a realizar en el recurso identificado por el dado Solicitud-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 OBTENER

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 CABEZA

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

3 CORREO

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

4 PONER

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

5 ELIMINAR

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

6 CONECTAR

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

7 OPCIONES

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

8 RASTRO

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:

OPCIONES * HTTP / 1.1

2 los absolutoURI se 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:

OBTENGA 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:

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

Anfitrión: 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 el encabezado general y el encabezado de entidad 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:

  • Aceptar-juego de caracteres

  • Aceptar codificación

  • Aceptar-idioma

  • Autorización

  • Suponer

  • De

  • Anfitrión

  • If-Match

  • Si-modificado-desde

  • Si-ninguna-coincidencia

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • Autorización de proxy

  • Distancia

  • Referer

  • TE

  • Agente de usuario

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 recuperar hola.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 sin formato 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í tipo de contenido le dice al servidor que los datos transmitidos son datos de un formulario web simple y largo será 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>

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

networking interview questions

Las 47 preguntas principales de la entrevista sobre redes (2021)

apple touch icon@2

agnóstico del lenguaje: ¿cuál es la diferencia entre pasar por referencia y pasar por valor?