L’errore HTTP 429 “Too Many Requests” è un codice di risposta con limitazione di velocità inviato da un server quando un utente (o un client) supera il numero di richieste consentite in un determinato lasso di tempo. Questo stato è tipicamente parte di meccanismi di sicurezza, protezione API o anti-DDoS.
Negli ambienti di produzione, può interrompere i servizi, interrompere le integrazioni API o influire sulla SEO. Questa guida avanzata spiega come diagnosticare, prevenire e risolvere l’errore 429 sia dal lato client che dal lato server.
Scenari comuni:
Un utente/robot sta inviando troppe richieste HTTP (chiamate API, caricamento di pagine, ecc.)
L’applicazione esegue lo scraping o il polling di un servizio di terze parti in modo troppo aggressivo
I firewall delle applicazioni web (WAF) o i reverse proxy (ad esempio, Cloudflare, Nginx) impongono limiti di velocità
Le API del server o del backend utilizzano librerie di limitazione della velocità (ad esempio, express-rate-limit, mod_evasive, ecc.)
I bot o i crawler invadono il sito web o l’endpoint
I server spesso inviano un’intestazione Retry-After con una risposta 429:
Indica al client quanto tempo attendere (in secondi) prima di riprovare.
Per Apache:
Per Nginx:
Questo aiuta a identificare quali IP o endpoint stanno attivando il limite.
Registri di Fail2Ban
Eventi del firewall Cloudflare
Log a livello di applicazione (Laravel, Express, Django, ecc.)
Analisi dei limiti di velocità (se si utilizza un gateway API)
Nginx può essere configurato in questo modo:
Aumentare la velocità o il burst
Applicare a percorsi specifici (ad esempio, /api/) invece che a livello globale
Inserire nella whitelist gli IP interni conosciuti
Se mod_evasive è attivo:
Regolare:
➡️ Aumentare le soglie o disabilitare per specifici IP affidabili.
Se siete dietro Cloudflare, controllate:
Regole di limitazione della velocità in Sicurezza > WAF
Modalità di lotta ai bot
Regole del firewall che bloccano in base a User-Agent o IP
Ridurre la sensibilità
Inserire in whitelist gli IP dei server o determinati user agent
Creare regole personalizzate per crawler e partner sicuri
Verificate se la vostra applicazione impone dei limiti utilizzando librerie come:
Node.js: express-rate-limit
Laravel: ThrottleRequests
Django: drf-extensions o middleware
Aggiornare la configurazione, come ad esempio:
➡️ Regolare i limiti, aggiungere una whitelist di utenti/IP o aumentare la quota in base ai token di autenticazione.
Se l’applicazione è il client e riceve 429:
Riprova automaticamente le richieste con ritardi crescenti:
Limitare le proprie richieste se si effettua il polling:
Uno stato 429 servito ai crawler dei motori di ricerca può danneggiare le classifiche.
Servire un 503 (servizio non disponibile) con Retry-After
Utilizzare il file robots.txt per limitare la velocità di crawling:
In Cloudflare: Andare su Bot > Gestione crawl
Invece di limiti severi a 429:
Utilizzate i CAPTCHA per le attività sospette
Implementare ritardi progressivi piuttosto che blocchi rigidi
Utilizzare una limitazione della velocità basata sull’utente piuttosto che sull’IP per gli utenti connessi
Fornire un accesso autenticato con limiti di velocità più elevati (ad esempio, tramite chiavi API o token)
L’errore 429 Too Many Requests è uno strumento utile ma talvolta dannoso. Capire da dove proviene – server, CDN o applicazione – è fondamentale per risolverlo. Con una configurazione adeguata, la registrazione e il rispetto dei limiti da parte del client, è possibile bilanciare la protezione con l’usabilità.