NetTool1

HTTP Headers Explained: Request, Response & Security Headers

Tabla de Contenidos

¿Qué Son los Encabezados HTTP?

Los encabezados HTTP son pares clave-valor enviados entre clientes y servidores durante la comunicación HTTP. Proporcionan contexto esencial sobre la solicitud o respuesta, incluyendo tipo de contenido, codificación, credenciales de autenticación, directivas de almacenamiento en caché y políticas de seguridad.

Los encabezados siguen un formato simple: Header-Name: value. Cada encabezado aparece en su propia línea, y una línea en blanco separa los encabezados del cuerpo del mensaje. Mientras que HTTP/1.1 usa encabezados de texto plano, HTTP/2 y HTTP/3 los comprimen usando los algoritmos HPACK y QPACK respectivamente.

Los encabezados se dividen en cuatro categorías principales:

Las aplicaciones web modernas típicamente intercambian 20-40 encabezados por ciclo de solicitud-respuesta. Algunos son obligatorios (como Host en HTTP/1.1), mientras que otros son opcionales pero altamente recomendados para seguridad y rendimiento.

Consejo profesional: Usa la pestaña Red de las DevTools de tu navegador para inspeccionar encabezados en tiempo real. Esto es invaluable para depurar problemas de API y entender cómo los servicios de terceros se comunican con tu aplicación.

Encabezados de Solicitud: Lo Que Envían los Navegadores

Los encabezados de solicitud le dicen al servidor qué quiere el cliente y qué puede manejar. Incluyen información sobre tipos de contenido aceptados, idiomas preferidos, credenciales de autenticación y las capacidades del cliente.

Aquí están los encabezados de solicitud más importantes que encontrarás:

Encabezado Propósito Ejemplo
Host Especifica el nombre de dominio del servidor Host: example.com
User-Agent Identifica el software del cliente User-Agent: Mozilla/5.0...
Accept Tipos de medios que el cliente puede procesar Accept: application/json
Accept-Language Idiomas preferidos para la respuesta Accept-Language: en-US,en;q=0.9
Accept-Encoding Algoritmos de compresión soportados Accept-Encoding: gzip, br
Authorization Credenciales de autenticación Authorization: Bearer token123
Cookie Cookies almacenadas para el dominio Cookie: session=abc123
Referer URL de la página anterior Referer: https://google.com

Entendiendo el Encabezado Accept

El encabezado Accept usa valores de calidad (valores-q) para indicar preferencia cuando múltiples formatos son aceptables. Los valores van de 0 a 1, siendo 1 la prioridad más alta:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Esto le dice al servidor: "Prefiero HTML o XHTML, pero aceptaré XML con 90% de preferencia, y cualquier otra cosa con 80% de preferencia." Los servidores usan esto para realizar negociación de contenido y devolver el formato más apropiado.

El Encabezado User-Agent

El encabezado User-Agent identifica el software del cliente, sistema operativo y tipo de dispositivo. Aunque es útil para análisis y servir contenido específico del dispositivo, también es notoriamente poco confiable debido a la suplantación de user-agent.

La mejor práctica moderna es usar detección de características en lugar de rastreo de user-agent. Sin embargo, el encabezado sigue siendo valioso para registro, depuración y detección de bots.

Consejo rápido: Prueba tus endpoints de API con diferentes cadenas User-Agent para asegurar que no fallen para clientes legítimos. Algunos servidores bloquean incorrectamente solicitudes con user agents desconocidos.

Encabezados de Respuesta: Lo Que Devuelven los Servidores

Los encabezados de respuesta proporcionan metadatos sobre la respuesta del servidor, incluyendo tipo de contenido, instrucciones de almacenamiento en caché, políticas de seguridad e información del servidor. Son cruciales para la renderización adecuada del contenido, optimización del rendimiento y seguridad.

Los encabezados de respuesta clave incluyen:

Encabezado Propósito Ejemplo
Content-Type Tipo de medio del cuerpo de la respuesta Content-Type: text/html; charset=utf-8
Content-Length Tamaño del cuerpo de la respuesta en bytes Content-Length: 1234
Content-Encoding Algoritmo de compresión usado Content-Encoding: gzip
Set-Cookie Envía cookies al cliente Set-Cookie: id=a3; Secure; HttpOnly
Location URL para redirecciones Location: https://example.com/new
Server Información sobre el software del servidor Server: nginx/1.18.0
Date Fecha y hora en que se envió la respuesta Date: Mon, 31 Mar 2026 12:00:00 GMT
ETag Identificador único para la versión del recurso ETag: "33a64df551425fcc55e"

Content-Type y Codificación de Caracteres

El encabezado Content-Type es crítico para la renderización adecuada del contenido. Le dice al navegador cómo interpretar el cuerpo de la respuesta. Siempre incluye la codificación de caracteres (usualmente UTF-8) para prevenir problemas de codificación:

Content-Type: application/json; charset=utf-8
Content-Type: text/html; charset=utf-8
Content-Type: image/png

Los encabezados Content-Type faltantes o incorrectos hacen que los navegadores adivinen el tipo de contenido (rastreo MIME), lo que puede llevar a vulnerabilidades de seguridad y problemas de renderización.

El Encabezado Set-Cookie

El encabezado Set-Cookie crea cookies en el lado del cliente. Las cookies modernas siempre deben incluir atributos de seguridad:

Set-Cookie: sessionId=abc123; Secure; HttpOnly; SameSite=Strict; Max-Age=3600

Encabezados de Seguridad: Protegiendo Tu Aplicación

Los encabezados de seguridad son tu primera línea de defensa contra vulnerabilidades web comunes. Instruyen a los navegadores a aplicar políticas de seguridad que protegen a los usuarios de ataques como XSS, clickjacking y ataques de intermediario.

Cada aplicación en producción debe implementar estos encabezados de seguridad esenciales:

Content-Security-Policy (CSP)

CSP previene ataques XSS controlando qué recursos puede cargar el navegador. Es uno de los encabezados de seguridad más poderosos pero requiere configuración cuidadosa:

Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com

Comienza con una política restrictiva y relájala gradualmente según sea necesario. Usa Content-Security-Policy-Report-Only para probar políticas sin romper tu sitio.

Strict-Transport-Security (HSTS)

HSTS fuerza a los navegadores a usar HTTPS para todas las solicitudes futuras a tu dominio, previniendo ataques de degradación de protocolo:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

La directiva preload te permite enviar tu dominio a la lista de precarga HSTS, que está codificada en los navegadores. Esto proporcionattps://example.com # Send custom headers curl -H "