Formato de cabeceras HTTP
WebTodo se ejecuta en tu navegador: no se sube nada
⚠️ No usa la red: las cabeceras de respuesta las obtienes tú. La forma más simple es `curl -I https://example.com` (con `-I` se envía solo HEAD, así que devuelve exactamente las cabeceras), o copiarlas del panel Red de las herramientas de desarrollo. Coloca en una tabla una pantalla llena de cabeceras HTTP: sirven tanto las de petición como las de respuesta, y la salida de `curl -I` se puede pegar tal cual. Además de alinear, se calculan de paso un par de cosas: `Content-Length` se convierte en un tamaño legible (`20480` no dice nada a simple vista), el charset de `Content-Type` se extrae aparte y el código de estado se separa de la línea de estado para poder consultarlo. ⚠️ En las respuestas también se comprueban tres cabeceras de seguridad que deberían estar: `X-Content-Type-Options` (sin ella, el navegador puede ejecutar un `.txt` subido por el usuario como script), `Strict-Transport-Security` (sin ella, la primera visita aún puede ir por HTTP en claro) y `Content-Security-Policy` (sin ella, un solo XSS lee todo lo de la página). Cuando investigas cómo han inyectado un sitio, lo primero que quieres ver es si está `Content-Security-Policy`. Dos puntos que se suelen fallar se tratan aquí conforme a la norma: las cabeceras repetidas nunca se fusionan (una respuesta puede llevar una docena de líneas `Set-Cookie`, y unirlas con comas cambia el significado, porque su valor ya puede contener comas); y las líneas de continuación se pliegan (una línea que empieza por un espacio continúa la anterior, un estilo que HTTP/1.1 dejó obsoleto pero que aún aparece en capturas y en pasarelas antiguas).
Funciones
- Admite cabeceras de petición y de respuesta; la salida de `curl -I` sirve tal cual
- Los nombres repetidos se conservan como filas separadas, nunca se fusionan (una docena de `Set-Cookie` es normal)
- Las líneas de continuación se pliegan en una sola línea con un espacio
- `Content-Length` se vuelve un tamaño legible; el charset de `Content-Type` se extrae
- El código de estado se saca de la línea de estado para consultarlo con facilidad
- Comprueba tres cabeceras de seguridad que falten y explica el coste de cada ausencia
- Todo se analiza en tu dispositivo: las cabeceras nunca salen de él
Cómo se usa
- Pega las cabeceras en bruto a la izquierda (la salida de `curl -I https://…` sirve)
- Desactiva la comprobación de seguridad si no la quieres
- El resultado aparece al instante; cada fila se copia por separado
- Para mirar una cookie, lleva las líneas `Set-Cookie` a «Formato de cookies»
Preguntas frecuentes
- ¿Por qué hay dos filas con el mismo nombre de cabecera? ¿Está roto el análisis?
- No: eso es correcto. HTTP permite que una cabecera aparezca más de una vez, y `Set-Cookie` es el caso habitual: una docena de líneas `Set-Cookie` en una respuesta es de lo más normal, cada una describe una cookie distinta. ⚠️ A propósito no se fusionan en una sola fila. Combinar valores repetidos con comas es HTTP válido, pero `Set-Cookie` es la excepción de siempre: su valor ya puede contener comas (por ejemplo la fecha `Expires=Wed, 21 Oct 2015 07:28:00 GMT`), y una vez unidos ya no hay forma de separarlos. El resultado es un análisis que parece haber salido bien mientras falta una cookie.
- ¿Qué es una «línea de continuación»?
- Un estilo antiguo en que un valor largo se parte en varias líneas, y cada línea siguiente empieza por un espacio o un tabulador para marcar que continúa la anterior. ``` X-Custom: part one part two ``` Esas dos líneas son una sola cabecera cuyo valor es `part one part two`. RFC 7230 dejó obsoleto el estilo (se confunde con el cuerpo y es difícil de analizar bien), pero todavía aparece en herramientas de captura y pasarelas antiguas, así que aquí se trata y se etiqueta.
- ¿Tengo que añadir todas las cabeceras de seguridad que señala?
- Depende, pero las tres merecen una mirada seria. `X-Content-Type-Options: nosniff` no cuesta prácticamente nada y debería estar en cualquier sitio: sin ella, el navegador puede tratar como script un archivo subido por el usuario. `Strict-Transport-Security` solo significa algo en HTTPS, y ojo: una vez servida es difícil retirarla (los navegadores recuerdan el `max-age`), así que empieza con un valor corto. `Content-Security-Policy` es la más valiosa y la más fácil de configurar mal: una política estricta de golpe dejará la página en blanco con toda probabilidad, así que empieza con `Content-Security-Policy-Report-Only` y recoge informes de infracción antes de cambiarla. Y una cosa más: estas tres solo tienen sentido en las respuestas, así que pegar una petición no activa la comprobación.
Herramientas relacionadas
Códigos de estado HTTP
WebConsulta un código de estado HTTP: significado, clase 1xx–5xx, usos típicos y trampas habituales. También busca por palabra clave. Todo local.
Formato de cookies
WebAnaliza una cabecera Cookie de petición o Set-Cookie de respuesta en una tabla, separa atributos y caducidad, y avisa si falta HttpOnly, Secure o SameSite.
Caja de cURL
WebConvierte un comando curl en código de siete lenguajes, lo desglosa en método, cabeceras y cuerpo, o construye un curl a partir de una petición HTTP.
Analizador de URL
WebDescompone una URL en esquema, host, puerto, ruta, parámetros y ancla, con cada parámetro en crudo y decodificado. Todo en tu navegador.
Analizador de UA
WebAnaliza un User-Agent: navegador, versión, sistema, tipo de dispositivo y motor, con las reglas que coinciden. Solo coincidencia de patrones.
Tipos MIME
WebConsulta el tipo MIME a partir de una extensión, o la extensión por defecto de un tipo de medio. Solo los habituales. Todo en tu navegador.