L’errore “Bad Request: Your browser sent a request that this server could not understand. Size of a request header field exceeds server limit” indica che il browser ha inviato una richiesta al server che quest’ultimo non è stato in grado di comprendere a causa della dimensione eccessiva di uno o più campi nell’intestazione HTTP della richiesta.
Indice
- Quando si verifica l’errore HTTP 400: Size of a request header field exceeds server limit?
- Troppi cookie possono produrre l’errore Size of a request header field exceeds server limit
- Come risolvere l’errore Size of a request header field exceeds server limit
- Modifica della configurazione di Apache per gestire l’errore HTTP 400
- Limiti sulle intestazioni HTTP: una buona pratica per garantire sicurezza e performance del sistema
- Aumentare il limite delle intestazioni accettate in Apache
- Aumentare il limite delle intestazioni accettate in Nginx
- Aumentare il limite delle intestazioni accettate in IIS
- Verificare il buon esito delle configurazioni
- Conclusione
- Domande Frequenti
Quando si verifica l’errore HTTP 400: Size of a request header field exceeds server limit?
Questo errore è associato al codice di stato HTTP 400 il quale sta ad indicare che la richiesta inviata dal client è “cattiva” (è un errore del tipo Bad Request), cioè non è valida e non può essere elaborata dal server. La specifica “Size of a request header field exceeds server limit” indica che la causa dell’errore è da ricercare nell’eccessiva lunghezza di qualche campo dell’intestazione HTTP presente nella richiesta del browser.
Molti server hanno un limite di dimensione per le intestazioni della richiesta HTTP e se una di queste supera questo limite, il server può rispondere, appunto, con un errore di tipo Bad Request.
È importante notare che questo errore non dipende dalla tecnologia o dal linguaggio di programmazione utilizzato per inviare la richiesta, ma dipende dalla specifica configurazione del server e dalle limitazioni imposte dallo stesso protocollo HTTP.
Troppi cookie possono produrre l’errore Size of a request header field exceeds server limit
La causa più comune che può portare all’errore Bad Request: Your browser sent a request that this server could not understand. Size of a request header field exceeds server limit è la quantità eccessiva di cookie trasmessi dal client.
I cookie sono piccoli file di testo che vengono memorizzati sul computer dell’utente da un sito web per identificare il browser durante le visite successive. Ogni volta che l’utente accede a un sito web, il browser invia i cookie associati a quel sito web nelle intestazioni della richiesta HTTP. Se ci sono troppi cookie associati a un sito web, le intestazioni della richiesta potrebbero diventare troppo grandi per essere gestite correttamente dal server, causando l’errore “Size of a request header field exceeds server limit”.
Come risolvere l’errore Size of a request header field exceeds server limit
Per risolvere l’errore è possibile agire sia a livelo della “richiesta” che della “risposta”. Questo errore, infatti, può verificarsi per diversi motivi, tra cui:
- Intestazioni troppo grandi: se stai inviando una richiesta con intestazioni troppo grandi, il server potrebbe rifiutarla a causa del limite di dimensioni importo dallo stesso protocollo HTTP. Se l’errore è nel volume della tua richiesta dovresti rivederla eliminando eventuali dati inutili o comprimendola opportunamente per ridurne le dimensioni.
- Troppi cookie: se il tuo briwser sta trasmettendo una richiesta con “troppi cookie” può essere che il server la ritenga non ricevibile. Questo problema è una specifica del punto precedente (le intestazioni sono troppo grandi perché ci sono troppi cookie). In questo caso per risolvere l’errore potrebbe essere sufficiente effettuare una pulizia dei cookie sul browser e poi ricaricare la pagina.
- Configurazione del server errata: il limite di dimensione delle intestazioni può essere stato impostato in modo troppo restrittivo sul server. In questo caso, sarà necessario contattare l’amministratore del server per aumentare tale limite.
Modifica della configurazione di Apache per gestire l’errore HTTP 400
Come detto il problema può essere affrontato anche dal punto di vista dell’amministratore di sistema. Agendo sulla configurazione del server è possibile, infati, aumentare tale limite mitigando la possibilità che si verifichi questo errore. Si tenga presente, tuttavia, che un valore troppo elevato potrebbe influire negativamente sulle prestazioni del sistema.
Prima di spiegare come procede in tal senso, tuttavia, è opportuna una precisazione sul perché questi limiti vengo imposti.
Limiti sulle intestazioni HTTP: una buona pratica per garantire sicurezza e performance del sistema
Le limitazioni sui campi di intestazione delle richieste HTTP hanno lo scopo di proteggere il server da attacchi di tipo Denial of Service (DoS) e per evitare che richieste troppo voluminose consumino risorse eccessive.
Quando un server riceve una richiesta HTTP con intestazioni di dimensioni elevate, infatti, rischia di esaurire la memoria disponibile per gestire le richieste, soprattutto in caso di traffico elevato, con la conseguenza di rallentare o bloccare il sistema.
Trovare un valore di configurazione che bilanci sicurezza e funzionalità è essenziale: un limite troppo basso può causare errori imprevisti per gli utenti legittimi, mentre uno troppo elevato aumenta la vulnerabilità del sistema a possibili attacchi.
Aumentare il limite delle intestazioni accettate in Apache
Per aumentare le dimensioni delle intestazioni accettate su Apache, è necessario modificare la configurazione del server. Ecco i passaggi da seguire:
- Accedi al file di configurazione di Apache: solitamente si trova in una posizione come “/etc/httpd/conf/httpd.conf” o “/etc/apache2/httpd.conf”.
- Cerca la seguente riga: “LimitRequestFieldSize”. Questa riga controlla la dimensione massima di ogni singolo campo di intestazione nella richiesta HTTP.
- Modifica il valore di “LimitRequestFieldSize” impostandolo a un valore più alto. Ad esempio, per impostare il limite a 8KB, dovresti modificare la riga come segue:
LimitRequestFieldSize 8192
- Salva il file di configurazione e riavvia Apache per rendere effettive le modifiche.
Aumentare il limite delle intestazioni accettate in Nginx
Per aumentare il limite delle intestazioni accettate in Nginx, è necessario modificare la configurazione del server. Ecco i passaggi da seguire:
- Accedi al file di configurazione di Nginx: solitamente si trova in una posizione come “/etc/nginx/nginx.conf”.
- Per aumentare il limite a 8 KB (divisi in 4 parti) aggiungi le seguenti righe all’interno del blocco “http” della configurazione:
large_client_header_buffers 4 8k;
- Salva il file di configurazione e riavvia Nginx per rendere effettive le modifiche.
Aumentare il limite delle intestazioni accettate in IIS
Per aumentare il limite delle intestazioni accettate in IIS (Internet Information Services), è necessario modificare la configurazione del server. Ecco i passaggi da seguire:
- Apri la console di gestione IIS e seleziona il server desiderato
- Clicca con il tasto destro del mouse su “Siti” e seleziona “Impostazioni sito”
- Clicca su “Intestazioni HTTP” e modifica il valore “Dimensioni massime dei campi di intestazione richiesta”. Questo imposterà la dimensione massima delle intestazioni (in kilobyte)
- Fai clic su “OK” per salvare le modifiche
- Riavvia IIS per rendere effettive le modifiche
Verificare il buon esito delle configurazioni
Una volta applicate le modifiche ai parametri di configurazione per risolvere l’errore HTTP 400 “Size of a request header field exceeds server limit”, è una buona pratica verificare che queste siano state implementate correttamente.
Per fare ciò, puoi utilizzare strumenti come curl
(e un “pizzico” di Python) per inviare richieste HTTP personalizzate al server con intestazioni volutamente lunghe per verificare che l’errore 400 non venga restituito. Ecco un comando di esempio che potete digitare sul terminale del vostro computer Linux o Mac:
curl -H "X-Custom-Header: $(python3 -c 'print("A" * 16000)')" https://www.tuosito.com
Conclusione
In sintesi, risolvere l’errore HTTP 400 “Size of a request header field exceeds server limit” richiede una comprensione sia dei parametri di configurazione del server che delle implicazioni in termini di sicurezza e performance.
Nello specifico abbiamo visto come, attraverso modifiche appropriate ai file di configurazione di Apache, Nginx e IIS, è possibile aumentare i limiti di dimensione delle intestazioni per prevenire errori 400, ma è bene tenere a mente che è necessario trovare un compromesso per non compromettere la sicurezza del sistema.
Domande Frequenti
Questo errore HTTP 400 indica che una delle intestazioni HTTP della richiesta inviata supera il limite massimo consentito dal server. Di solito, accade quando un’applicazione o un browser invia dati troppo grandi nei campi delle intestazioni, ad esempio a causa di un numero elevato di cookie.
Sì, alcune volte il browser potrebbe inviare richieste con intestazioni molto grandi, solitamente a causa di cookie di sessione o dati di autenticazione. In questo caso una semplice pulizia dei cookie potrebbe risolvere il problema.
I limiti sulle dimensioni delle intestazioni sono implementati per motivi di sicurezza e performance. Un limite evita che utenti malintenzionati possano inviare richieste troppo grandi, che potrebbero sovraccaricare il server o essere usate per attacchi di tipo Denial of Service (DoS).
La scelta dipende dalle esigenze specifiche dell’applicazione e dal contesto di utilizzo. Per la maggior parte delle applicazioni, i valori predefiniti nei web-server sono adeguati. Tuttavia, se la tua applicazione richiede intestazioni più grandi, puoi aumentare tali limiti avendo sempre cura di non esagerare perché configurazioni troppo ampie possono avere effetti negativi sulle prestazioni del sistema.