Analizzi le intestazioni HTTP in un oggetto chiave-valore
Incolli un blocco grezzo di intestazioni HTTP e ottenga un oggetto JSON prevedibile, pronto per debug, test, script o strumenti API.
Esegui gratis nel browser
I nomi vengono normalizzati in minuscolo, gli spazi esterni dei valori vengono rimossi e i nomi ripetuti, come Set-Cookie, restano ordinati in array anziché essere sovrascritti. Ogni riga non vuota deve rispettare la struttura standard Name: Value; in caso contrario viene restituito un errore chiaro, mai un risultato parziale.
Trasformi i blocchi copiati in dati strutturati utilizzabili
Gli strumenti per sviluppatori del browser, i client da riga di comando, i reverse proxy e i log dei server mostrano spesso le intestazioni HTTP come semplici righe. Il formato è facile da leggere, ma scomodo da interrogare, confrontare o archiviare tramite codice. Questo parser converte ogni riga Name: Value valida in una proprietà di un unico oggetto headers. I nomi vengono normalizzati in minuscolo perché i campi HTTP non distinguono maiuscole e minuscole: Content-Type e content-type indicano quindi la stessa proprietà. Gli spazi attorno al valore vengono rimossi, mentre i due punti al suo interno restano invariati. La distinzione è importante per date, URL, schemi di autorizzazione e altri valori che contengono punteggiatura legittima. Lei può copiare il risultato direttamente in una fixture, passarlo a un altro script o confrontarlo con una risposta prevista. Una riga vuota finale è ammessa perché spesso separa le intestazioni dal corpo del messaggio. Una riga vuota o non valida all’interno del blocco viene invece rifiutata, evitando che un’analisi incompleta sembri riuscita.
Mantenga le intestazioni duplicate senza perdere informazioni
Un normale oggetto JavaScript conserva un solo valore per chiave; un parser troppo semplice sovrascrive quindi i valori precedenti quando un nome compare di nuovo. Questo comportamento può eliminare silenziosamente dati significativi del protocollo. La capacità restituisce una stringa se l’intestazione compare una volta e trasforma la proprietà in un array quando ritrova lo stesso nome, indipendentemente dalle maiuscole. Le occorrenze successive vengono aggiunte nell’ordine originale. La regola vale per Set-Cookie, Warning, Link e qualsiasi altro campo ripetuto, senza tentare di unire i valori con virgole. È una scelta intenzionale: le regole di combinazione cambiano a seconda del campo e Set-Cookie, in particolare, non deve essere trattato come un elenco generico separato da virgole. Un valore vuoto resta valido se sono presenti i due punti, perciò X-Optional: diventa una stringa vuota e non un errore. Il parser non interpreta date, cookie, media type, pesi di qualità o credenziali. Conserva il testo affinché venga elaborato dal componente che comprende quella specifica intestazione.
Individui subito le righe errate e usi il risultato in sicurezza
Un parsing affidabile dipende dal rifiuto corretto quanto dalla conversione. Ogni riga deve iniziare con un nome di campo HTTP valido, seguito immediatamente dai due punti e dal relativo valore. I nomi possono contenere i caratteri token ammessi da HTTP, ma non spazi, tabulazioni, parentesi, separatori o rientri iniziali. Le obsolete righe di continuazione ripiegate vengono rifiutate invece di essere unite al valore precedente: ciò previene risultati ambigui e invita a fornire un blocco moderno e normalizzato. Se la validazione fallisce, l’errore identifica la riga interessata e chiarisce se non è valida la coppia oppure il nome. Non viene restituito alcun oggetto parziale. La capacità è quindi adatta a pipeline di importazione e test automatici, dove accettare metà blocco sarebbe peggio che interrompersi. L’elaborazione è locale e deterministica: non ci sono richieste di rete, campi dipendenti dall’ora, valori casuali o ricerche esterne. Lo stesso testo produce la stessa struttura JSON nel browser e tramite API, il cui prezzo base è $0.002.
Casi d'uso
Prepari fixture per i test API
Converta le intestazioni copiate da una traccia HTTP in JSON strutturato da salvare in una fixture di risposta deterministica.
Esamini i campi di risposta ripetuti
Mantenga nell’ordine ogni occorrenza di Set-Cookie, Link o Warning senza perdere i valori precedenti durante la conversione.
Convalidi la diagnostica importata
Rifiuti le righe errate prima che un estratto di log entri in un flusso di debug, assistenza o osservabilità.
Domande frequenti
Come vengono rappresentati i nomi di intestazione duplicati?
Un nome presente una volta corrisponde a una stringa. Se si ripete, il valore diventa un array nell’ordine di ingresso.
I nomi delle intestazioni distinguono maiuscole e minuscole?
No. I nomi vengono normalizzati in minuscolo, quindi Content-Type e content-type sono la stessa intestazione.
Il valore di un’intestazione può contenere due punti?
Sì. Solo i primi due punti separano nome e valore; tutti quelli successivi restano parte del valore.
Che cosa accade se una riga non è valida?
L’intera richiesta fallisce con un errore di input che identifica la riga. Non viene mai restituito un oggetto parziale.
Il parser divide cookie o valori separati da virgole?
No. I valori restano testo, eccetto gli spazi esterni. Le righe fisiche ripetute sono rappresentate come array.
Quanto costa l’uso tramite API?
Il prezzo base è $0.002 per richiesta. La versione nel browser opera localmente senza inviare il blocco in rete.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"text": "Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.http_header_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |