El protocolo HTTP (HyperText Transfer Protocol) es quizá el protocolo más importante que debe conocer un desarrollador Web.
El protocolo HTTP es un documento que define las reglas de los mensajes que se intercambian entre los navegadores (clientes) y los servidores. El documento completo lo puedes encontrar en http://www.rfc-base.org/txt/rfc-2068.txt.
HTTP es un protocolo cliente-servidor, lo que significa que el cliente envía una petición al servidor y espera un mensaje de respuesta.
Cuando abres el navegador e ingresas a cualquier URL los pasos que ocurren son los siguientes:
- El navegador abre una conexión con el servidor.
- El navegador envía un mensaje HTTP (a esto se le conoce como una petición).
- El servidor recibe el mensaje, lo interpreta siguiendo las reglas del protocolo y responde con otro mensaje (la respuesta) que puede ser el documento que se solicitó el usuario, o un error (p.e. que el recurso no existe).
- El navegador cierra la conexión.
Un mensaje HTTP (no importa si es de petición o respuesta) se compone de 3 partes:
- La primera línea (que es diferente para la petición y la respuesta).
- Encabezados.
- Una línea en blanco.
- El cuerpo (opcional)
GET /index.html HTTP/1.1
Host: wikipedia.org
Accept: text/html
La primera línea se compone de un verbo (en este caso GET), una ruta a un recurso (en este caso /index.html
) y la versión del protocolo (en este caso HTTP/1.1
)
En este ejemplo tenemos dos encabezados: Host
y Accept
.
Este mensaje no tiene cuerpo.
HTTP/1.1 200 OK
Server: wikipedia.org
Content-Type: text/html
Content-Lenght: 2026
<html>
…
</html>
La primera línea de un mensaje HTTP de petición empieza con un verbo (también se le conoce como método). Los verbos definen la acción que se quiere realizar sobre el recurso. Los verbos más comunes son:
- GET: se utiliza para solicitar un recurso.
- POST: se utiliza para publicar un recurso.
- PUT: se utiliza para reemplazar un recurso.
- DELETE: se utiliza para eliminar un recurso.
Existen otros pero estos son los más comunes.
La primera línea de un mensaje de respuesta tiene un código de 3 dígitos que le indica al cliente cómo interpretar la respuesta.
Los códigos de respuesta se dividen en cinco categorías dependiendo del dígito con el que inician:
- 1XX: Información
- 2XX: Éxito
- 3XX: Redirección
- 4XX: Error en el cliente
- 5XX: Error en el servidor
Los encabezados brindan información adicional sobre la petición o la respuesta. Los encabezados tienen la siguiente sintaxis:
[nombre del encabezado]: [valor del encabezado]
Un URL (Uniform Resource Locator) se utiliza para ubicar un recurso en Internet. Los URLs no solo se pueden utilizar para el protocolo HTTP, se utilizan en muchos otros protocolos.
La siguiente imagen muestra las partes de un URL utilizando dos ejemplos:
El esquema define el protocolo a utilizar, para HTTP puede ser http
o https
(el protocolo seguro de HTTP).
La IP o el nombre del servidor que se quiere acceder (p.e. 127.0.0.1, localhost, google.com, www.google.com.co, etc.)
E puerto en el que está escuchando el servidor HTTP. Si se omite se asume que es el 80.
Define la ruta del recurso que se quiere acceder.
Contiene información adicional para el servidor en forma de propiedades (atributo=valor
). Las propiedades se separan por &
.
La referencia a una ubicación interna del documento.
- Ver el video de esta lección: https://youtu.be/K589vqhuMm8.