Seguridad web

HTTP

Se lee en aproximadamente 5 minutos

Qué es HTTP

HTTP (HyperText Transfer Protocol) es el protocolo de comunicación entre navegadores web y servidores. Originado en 1991 con HTTP/0.9 diseñado por Tim Berners-Lee para transferir documentos HTML, hoy se usa para todo tipo de recursos web: imágenes, vídeo, datos JSON y respuestas API.

Al introducir una URL en el navegador, se envía una solicitud HTTP al servidor, que devuelve una respuesta HTTP. HTTP es sin estado (stateless): cada solicitud se procesa independientemente. Para mantener sesiones de login se usan cookies o tokens de autenticación.

Estructura de solicitud y respuesta

Solicitud
Método (GET, POST, PUT, DELETE) especifica la operación. Ruta URL indica el recurso. Encabezados contienen metadatos (User-Agent, Accept, Authorization). POST y PUT incluyen cuerpo con datos.
Respuesta
Código de estado (200, 404, 500) indica el resultado. Encabezados incluyen Content-Type, Cache-Control y encabezados de seguridad. Cuerpo contiene HTML, JSON, binario de imagen, etc.

GET obtiene recursos sin cuerpo. POST envía datos (formularios, llamadas API). En REST APIs también se usan PUT (actualizar), DELETE (eliminar) y PATCH (actualización parcial).

Principales códigos de estado

2xx (Éxito)
200 OK solicitud exitosa. 201 Created recurso creado. 204 No Content éxito sin cuerpo de respuesta.
3xx (Redirección)
301 Moved Permanently cambio permanente de URL (SEO hereda). 302 Found redirección temporal. 304 Not Modified caché válida.
4xx (Error del cliente)
400 Bad Request error de sintaxis. 401 Unauthorized requiere autenticación. 403 Forbidden sin permisos. 404 Not Found recurso inexistente. 429 Too Many Requests límite de tasa excedido.
5xx (Error del servidor)
500 Internal Server Error error genérico del servidor. 502 Bad Gateway respuesta inválida del backend. 503 Service Unavailable servidor temporalmente no disponible.

Versiones y evolución de HTTP

HTTP/1.1 (1997)
Aún ampliamente usado. Keep-Alive, transferencia chunked, Host header. Pero solo una solicitud simultánea por conexión TCP (Head-of-Line Blocking).
HTTP/2 (2015)
Basado en SPDY de Google. Multiplexación: múltiples solicitudes/respuestas en paralelo sobre una conexión TCP. Compresión de encabezados (HPACK). Server push.
HTTP/3 (2022)
Usa QUIC (basado en UDP) eliminando Head-of-Line Blocking a nivel TCP. Establecimiento de conexión rápido (0-RTT). Resistente a cambios Wi-Fi/celular en móviles.

HTTP/2 y HTTP/3 requieren HTTPS en la práctica. Los navegadores principales no soportan HTTP/2 sin cifrar, y HTTP/3 incorpora TLS 1.3 en QUIC.

Relación entre HTTP y HTTPS

HTTP transmite en texto plano, vulnerable a interceptación y alteración. HTTPS añade cifrado TLS a HTTP, asegurando la comunicación.

  • HTTP: Puerto 80. Texto plano. Navegador muestra "No seguro".
  • HTTPS: Puerto 443. Cifrado TLS. Muestra candado. Ventaja SEO.

HTTPS es el estándar de facto actual. HTTP es el protocolo base y HTTPS es su extensión cifrada. El modelo de solicitud/respuesta, métodos y códigos de estado de HTTP se usan igual en HTTPS.

Conceptos erróneos comunes

HTTP y HTTPS son protocolos completamente diferentes
HTTPS es HTTP con cifrado TLS añadido. La estructura de solicitudes/respuestas, métodos y códigos de estado son idénticos. La diferencia es solo si la comunicación está cifrada o no.
HTTP/2 o HTTP/3 siempre aceleran el sitio
Mejoran la eficiencia de comunicación, pero si el cuello de botella es el procesamiento del servidor, consultas a BD o renderizado del frontend, la velocidad percibida puede no cambiar.
HTTP es tecnología obsoleta que ya no se usa
Aunque HTTPS es el estándar, HTTP sigue siendo la base sobre la que funciona HTTPS. En desarrollo local, intranets y comunicación IoT donde no se necesita cifrado, HTTP se usa directamente.
Compartir

Términos relacionados

Artículos relacionados