Analise cabeçalhos HTTP e converta em um objeto
Cole um bloco bruto de cabeçalhos HTTP e receba um objeto JSON previsível, pronto para depuração, testes, scripts ou ferramentas de API.
Executar grátis
Os nomes são normalizados em minúsculas, os espaços externos dos valores são removidos e nomes repetidos, como Set-Cookie, são preservados na ordem em arrays, sem sobrescrever dados. Cada linha não vazia deve seguir a estrutura padrão Name: Value; caso contrário, a ferramenta retorna um erro claro, nunca um resultado parcial.
Transforme blocos copiados em dados estruturados úteis
As ferramentas de desenvolvimento do navegador, clientes de linha de comando, proxies reversos e logs de servidor costumam exibir cabeçalhos HTTP como linhas simples. Esse formato é fácil de ler, mas inconveniente para consultar, comparar ou armazenar por código. Este analisador transforma cada linha Name: Value válida em uma propriedade dentro de um único objeto headers. Os nomes são convertidos para minúsculas porque campos HTTP não diferenciam maiúsculas de minúsculas; assim, Content-Type e content-type apontam para a mesma propriedade. Os espaços ao redor do valor são removidos, mas os dois-pontos internos permanecem intactos. Isso é essencial para horários, URLs, esquemas de autorização e outros valores que usam pontuação legítima. O resultado pode ser copiado diretamente para uma fixture, enviado a outro script ou comparado com uma resposta esperada. Uma linha vazia no final é aceita, pois blocos HTTP copiados frequentemente incluem o separador anterior ao corpo. Linhas vazias ou malformadas no meio são rejeitadas para impedir que uma análise incompleta pareça correta.
Preserve cabeçalhos duplicados sem descartar informações
Um objeto JavaScript comum guarda apenas um valor por chave. Por isso, um analisador simplista sobrescreve valores anteriores sempre que o mesmo nome aparece novamente. Esse comportamento pode apagar silenciosamente informações importantes do protocolo. A capacidade retorna uma string quando o cabeçalho aparece uma vez e converte a propriedade em um array quando encontra o mesmo nome, sem considerar diferenças entre maiúsculas e minúsculas. Outras ocorrências são acrescentadas na ordem original. A regra funciona para Set-Cookie, Warning, Link e qualquer campo repetido, sem tentar combinar valores com vírgulas. Essa decisão é intencional: diferentes cabeçalhos seguem regras distintas, e Set-Cookie especialmente não pode ser tratado como uma lista genérica separada por vírgulas. Um valor vazio continua válido quando os dois-pontos estão presentes; portanto, X-Optional: vira uma string vazia, não um erro. O analisador não interpreta datas, cookies, tipos de mídia, pesos de qualidade ou credenciais. Ele preserva os valores como texto para o componente que conhece a semântica daquele cabeçalho.
Encontre linhas inválidas cedo e use o resultado com segurança
Uma análise confiável depende tanto de rejeitar entradas ruins quanto de converter as boas. Cada linha precisa começar com um nome de campo HTTP válido, seguido imediatamente por dois-pontos e pelo valor. O nome pode conter os caracteres token permitidos pelo HTTP, mas não aceita espaços, tabulações, parênteses, separadores ou recuo inicial. Linhas de continuação dobradas, hoje obsoletas, são rejeitadas em vez de anexadas ao valor anterior. Isso evita resultados ambíguos e incentiva o envio de um bloco moderno e normalizado. Quando a validação falha, o erro informa a linha relevante e esclarece se o problema está no par ou no nome. Nenhum objeto parcial é devolvido. Assim, a capacidade funciona bem em pipelines de importação e testes automatizados, nos quais aceitar metade de um bloco seria pior do que interromper a operação. O processamento é local e determinístico: não há solicitações de rede, campos baseados em horário, números aleatórios ou consultas externas. O mesmo texto produz a mesma estrutura JSON no navegador e pela API, cujo preço básico é US$ 0,002.
Casos de uso
Monte fixtures para testes de API
Converta cabeçalhos copiados de um rastreamento HTTP em JSON estruturado para uma fixture de resposta determinística.
Examine campos repetidos da resposta
Mantenha cada ocorrência de Set-Cookie, Link ou Warning na ordem, sem perder valores anteriores na conversão.
Valide diagnósticos importados
Rejeite linhas malformadas antes de inserir um trecho de log em um fluxo de depuração, suporte ou observabilidade.
Perguntas frequentes
Como nomes de cabeçalho duplicados são representados?
Um nome presente uma vez aponta para uma string. Quando se repete, o valor vira um array na ordem de entrada.
Os nomes dos cabeçalhos diferenciam maiúsculas de minúsculas?
Não. Eles são normalizados em minúsculas; portanto, Content-Type e content-type são tratados como o mesmo cabeçalho.
Um valor de cabeçalho pode conter dois-pontos?
Sim. Apenas os primeiros dois-pontos separam o nome do valor; todos os outros continuam fazendo parte do valor.
O que acontece quando uma linha está malformada?
A solicitação inteira falha com um erro de entrada que identifica a linha. Nenhum objeto parcial é retornado.
O analisador divide cookies ou valores separados por vírgula?
Não. Os valores permanecem como texto, exceto pelos espaços externos. Linhas físicas repetidas são arrays.
Quanto custa usar pela API?
O preço básico é US$ 0,002 por solicitação. A versão no navegador roda localmente sem enviar o bloco pela rede.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"text": "Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.http_header_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |