Analice cabeceras HTTP y conviértalas en un objeto
Pegue un bloque de cabeceras HTTP sin procesar y reciba un objeto JSON predecible, listo para depuración, pruebas, scripts o herramientas de API.
Ejecutar — gratis
Los nombres se normalizan en minúsculas, se elimina el espacio exterior de los valores y los nombres repetidos, como Set-Cookie, se conservan en orden como matrices en vez de sobrescribirse. Cada línea no vacía debe respetar la estructura estándar Name: Value; si no lo hace, se devuelve un error claro y nunca un resultado parcial.
Convierta bloques copiados en datos estructurados útiles
Las herramientas de desarrollo del navegador, los clientes de línea de comandos, los proxies inversos y los registros de servidor suelen mostrar las cabeceras HTTP como líneas de texto. Ese formato resulta cómodo para leer, pero no para consultar, comparar o almacenar mediante código. Este analizador convierte cada línea Name: Value válida en una propiedad de un único objeto headers. Los nombres pasan a minúsculas porque los campos HTTP no distinguen mayúsculas de minúsculas; por eso Content-Type y content-type representan la misma propiedad. Se elimina el espacio que rodea al valor, pero se mantienen los dos puntos que este contenga. Esto es importante para fechas, URL, esquemas de autorización y otros valores con puntuación legítima. Puede copiar el resultado directamente en una prueba, pasarlo a otro script o compararlo con una respuesta esperada. Se admite una línea vacía final, habitual como separador antes del cuerpo del mensaje. En cambio, una línea vacía o incorrecta dentro del bloque se rechaza para impedir que un análisis incompleto parezca válido.
Conserve las cabeceras duplicadas sin perder información
Un objeto JavaScript normal guarda un solo valor por clave, de modo que un analizador demasiado simple sobrescribe los valores anteriores cuando un nombre aparece varias veces. Ese comportamiento puede eliminar datos relevantes del protocolo sin aviso. Esta capacidad devuelve una cadena cuando la cabecera aparece una vez y transforma la propiedad en una matriz cuando vuelve a encontrar el mismo nombre, sin distinguir mayúsculas. Las apariciones posteriores se añaden en su orden original. La regla sirve para Set-Cookie, Warning, Link y cualquier otro campo repetido, sin intentar unir valores mediante comas. Evitar esa unión automática es deliberado: cada cabecera tiene sus propias reglas y Set-Cookie, en particular, no debe tratarse como una lista genérica separada por comas. Un valor vacío sigue siendo válido si existe el signo de dos puntos, por lo que X-Optional: se convierte en una cadena vacía. El analizador no interpreta fechas, cookies, tipos multimedia, ponderaciones de calidad ni credenciales; conserva el texto para que lo procese el componente que conoce esa cabecera.
Detecte pronto las líneas incorrectas y use el resultado con seguridad
Un análisis fiable depende tanto del rechazo correcto como de la conversión. Cada línea debe empezar por un nombre de campo HTTP válido, seguido inmediatamente de dos puntos y su valor. Los nombres pueden contener los caracteres token permitidos por HTTP, pero no espacios, tabulaciones, paréntesis, separadores ni espacio inicial. Las líneas de continuación plegadas, hoy obsoletas, se rechazan en vez de anexarse al valor anterior; así se evitan resultados ambiguos y se fomenta el uso de bloques modernos ya normalizados. Si la validación falla, el error indica la línea correspondiente y aclara si el problema afecta al par o al nombre. Nunca se devuelve un objeto parcial. Esto permite usar la capacidad en importaciones y pruebas automatizadas, donde aceptar solo parte del bloque sería peor que detener el proceso. El tratamiento es local y determinista: no utiliza red, campos dependientes de la hora, valores aleatorios ni consultas externas. El mismo texto siempre genera la misma estructura JSON en el navegador y mediante la API, cuyo precio base es $0.002.
Qué puede hacer con ella
Cree datos de prueba para API
Convierta las cabeceras copiadas de una traza HTTP en JSON estructurado para incorporarlo a una prueba de respuesta determinista.
Revise campos de respuesta repetidos
Conserve cada aparición de Set-Cookie, Link o Warning en orden, sin perder valores anteriores durante la conversión.
Valide diagnósticos importados
Rechace las líneas incorrectas antes de incorporar un extracto de registro a un flujo de depuración, soporte u observabilidad.
Preguntas frecuentes
¿Cómo se representan los nombres de cabecera duplicados?
Un nombre que aparece una vez se asocia a una cadena. Si se repite, su valor pasa a ser una matriz en el orden de entrada.
¿Los nombres de cabecera distinguen mayúsculas de minúsculas?
No. Los nombres se normalizan en minúsculas, por lo que Content-Type y content-type se consideran la misma cabecera.
¿Puede contener dos puntos el valor de una cabecera?
Sí. Solo los primeros dos puntos separan el nombre del valor; los demás permanecen dentro del valor.
¿Qué ocurre si una línea es incorrecta?
La solicitud completa falla con un error de entrada que identifica la línea. Nunca se devuelve un objeto parcial.
¿El analizador divide cookies o valores separados por comas?
No. Los valores se conservan como texto, salvo el espacio exterior. Las líneas físicas repetidas se representan como matrices.
¿Cuánto cuesta el uso por API?
El precio base es $0.002 por solicitud. La versión del navegador se ejecuta localmente sin enviar el bloque por la red.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev2/http-header-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"}'const res = await fetch("https://api.kit.forhosting.com/dev2/http-header-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/http-header-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/http-header-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Content-Type: application/json\\r\\nCache-Control: no-cache\\r\\nSet-Cookie: theme=dark\\r\\nSet-Cookie: session=abc123"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/http-header-parse", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.http_header_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |