Tabla de Contenidos ¿Qué Son los Encabezados HTTP? Encabezados de Solicitud: Lo Que Envían los Navegadores Encabezados de Respuesta: Lo Que Devuelven los Servidores Encabezados de Seguridad: Protegiendo Tu Aplicación Encabezados de Almacenamiento en Caché: Optimización del Rendimiento Encabezados CORS: Compartir Recursos de Origen Cruzado Encabezados Personalizados: Cuándo y Cómo Usarlos Depuración de Encabezados HTTP Errores Comunes y Cómo Evitarlos Mejores Prácticas para Encabezados HTTP Preguntas Frecuentes Artículos Relacionados ¿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: Encabezados de solicitud - Enviados por el cliente para proporcionar información sobre la solicitud o el cliente mismo Encabezados de respuesta - Enviados por el servidor para proporcionar información sobre la respuesta Encabezados de representación - Describen el formato y la codificación del cuerpo del mensaje Encabezados de carga útil - Contienen información sobre los datos de carga útil, como la longitud del contenido 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: Secure - Solo enviar sobre conexiones HTTPS HttpOnly - Prevenir acceso de JavaScript para reducir riesgo de XSS SameSite - Controlar comportamiento de cookies entre sitios (Strict, Lax, o None) Max-Age o Expires - Definir tiempo de vida de la cookie 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 "
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.
Header-Name: value
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.
Host
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.
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:
Host: example.com
User-Agent
User-Agent: Mozilla/5.0...
Accept
Accept: application/json
Accept-Language
Accept-Language: en-US,en;q=0.9
Accept-Encoding
Accept-Encoding: gzip, br
Authorization
Authorization: Bearer token123
Cookie
Cookie: session=abc123
Referer
Referer: https://google.com
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 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.
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:
Content-Type
Content-Type: text/html; charset=utf-8
Content-Length
Content-Length: 1234
Content-Encoding
Content-Encoding: gzip
Set-Cookie
Set-Cookie: id=a3; Secure; HttpOnly
Location
Location: https://example.com/new
Server
Server: nginx/1.18.0
Date
Date: Mon, 31 Mar 2026 12:00:00 GMT
ETag
ETag: "33a64df551425fcc55e"
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 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
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:
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.
Content-Security-Policy-Report-Only
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 "
preload