Analysez des en-têtes HTTP dans un objet clé-valeur
Collez un bloc brut d’en-têtes HTTP et obtenez un objet JSON prévisible, prêt pour le débogage, les tests, les scripts ou les outils d’API.
Lancer gratuitement
Les noms sont normalisés en minuscules, les espaces autour des valeurs sont retirés et les noms répétés, tels que Set-Cookie, sont conservés dans l’ordre sous forme de tableaux au lieu d’être écrasés. Toute ligne non vide doit respecter la structure standard Name: Value, sinon une erreur claire est renvoyée sans résultat partiel.
Transformez un bloc copié en données structurées exploitables
Les outils de développement des navigateurs, les clients en ligne de commande, les proxys inverses et les journaux de serveur affichent souvent les en-têtes HTTP sous forme de lignes de texte. Cette présentation est lisible, mais peu pratique pour effectuer des recherches, des comparaisons ou un stockage par code. Cet analyseur transforme chaque ligne Name: Value valide en propriété d’un unique objet headers. Les noms passent en minuscules, car les champs HTTP ne sont pas sensibles à la casse : Content-Type et content-type désignent donc la même propriété. Les espaces entourant la valeur sont retirés, tandis que les deux-points présents dans celle-ci restent intacts. Cette distinction est essentielle pour les dates, les URL, les schémas d’autorisation et les autres valeurs contenant une ponctuation légitime. Vous pouvez copier directement le résultat dans un jeu de test, le transmettre à un script ou le comparer à une réponse attendue. Une ligne vide finale est admise, car elle sépare couramment les en-têtes du corps. Une ligne vide ou incorrecte au milieu du bloc est toutefois refusée afin qu’une analyse incomplète ne paraisse jamais réussie.
Conservez les en-têtes répétés sans perdre d’information
Un objet JavaScript ordinaire ne garde qu’une valeur par clé. Un analyseur trop simple remplace donc les valeurs précédentes dès qu’un nom réapparaît, ce qui peut supprimer silencieusement des données importantes du protocole. Cette capacité renvoie une chaîne lorsqu’un en-tête apparaît une seule fois, puis transforme la propriété en tableau lorsque le même nom, sans distinction de casse, revient. Les occurrences suivantes sont ajoutées dans leur ordre d’origine. Cette règle convient à Set-Cookie, Warning, Link et à tout autre champ répété, sans tenter de fusionner les valeurs par des virgules. Ce choix est volontaire : les règles de combinaison varient selon le champ et Set-Cookie ne doit notamment pas être traité comme une liste générique. Une valeur vide reste valide si les deux-points sont présents ; X-Optional: devient donc une chaîne vide et non une erreur. L’analyseur n’interprète ni dates, ni cookies, ni types de média, ni coefficients de qualité, ni identifiants. Il conserve le texte afin que le composant qui connaît le champ puisse l’interpréter.
Repérez les lignes incorrectes tôt et exploitez le résultat sereinement
Une analyse fiable repose autant sur le rejet des données incorrectes que sur leur conversion. Chaque ligne doit commencer par un nom de champ HTTP valide, immédiatement suivi de deux-points puis de sa valeur. Le nom peut employer les caractères token autorisés par HTTP, mais aucun espace, tabulation, parenthèse, séparateur ou retrait initial. Les anciennes lignes de continuation repliées sont refusées au lieu d’être rattachées à la valeur précédente. Cette règle évite les résultats ambigus et encourage l’utilisation d’un bloc moderne déjà normalisé. En cas d’échec de la validation, l’erreur indique la ligne concernée et précise si la paire ou le nom est invalide. Aucun objet partiel n’est renvoyé. La capacité convient ainsi aux chaînes d’importation et aux tests automatisés, où accepter la moitié d’un bloc serait pire que s’arrêter. Le traitement est local et déterministe : aucune requête réseau, donnée liée à l’heure, valeur aléatoire ou recherche externe. Le même texte produit donc la même structure JSON dans le navigateur et via l’API, dont le tarif de base est $0.002.
Cas d’usage
Créez des jeux de test d’API
Convertissez les en-têtes copiés d’une trace HTTP en JSON structuré pour constituer une réponse de test déterministe.
Examinez les champs de réponse répétés
Conservez chaque occurrence de Set-Cookie, Link ou Warning dans l’ordre, sans perdre les valeurs précédentes.
Validez les diagnostics importés
Refusez les lignes incorrectes avant d’intégrer un extrait de journal à un processus de débogage, d’assistance ou d’observabilité.
Questions fréquentes
Comment les noms d’en-têtes répétés sont-ils représentés ?
Une occurrence donne une chaîne. Si le nom revient, sa valeur devient un tableau respectant l’ordre d’entrée.
La casse des noms d’en-têtes est-elle prise en compte ?
Non. Les noms passent en minuscules ; Content-Type et content-type sont donc considérés comme un même en-tête.
Une valeur d’en-tête peut-elle contenir des deux-points ?
Oui. Seuls les premiers deux-points séparent le nom de la valeur ; les suivants restent dans la valeur.
Que se passe-t-il lorsqu’une ligne est incorrecte ?
La requête entière échoue avec une erreur d’entrée qui indique la ligne. Aucun objet partiel n’est renvoyé.
L’analyseur divise-t-il les cookies ou les valeurs séparées par des virgules ?
Non. Les valeurs restent du texte, hormis les espaces extérieurs. Les lignes physiques répétées deviennent des tableaux.
Combien coûte l’utilisation de l’API ?
Le tarif de base est de $0.002 par requête. La version navigateur s’exécute localement sans envoyer le bloc sur le réseau.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"text": "Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.http_header_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |