L’erreur HTTP 429 “Too Many Requests” est un code de réponse de limitation de débit envoyé par un serveur lorsqu’un utilisateur (ou un client) dépasse le nombre de requêtes autorisées dans un délai donné. Ce statut fait généralement partie des mécanismes de sécurité, de protection des API ou d’anti-DDoS.
Dans les environnements de production, il peut interrompre les services, briser les intégrations API ou affecter le référencement. Ce guide avancé explique comment diagnostiquer, prévenir et résoudre l’ erreur 429 du point de vue du client et du serveur.
Scénarios courants :
Un utilisateur/robot envoie trop de requêtes HTTP (appels API, chargements de pages, etc.)
Votre application fait du scraping ou interroge un service tiers de manière trop agressive
Les pare-feu d’application web (WAF) ou les proxys inversés (par exemple, Cloudflare, Nginx) imposent des limites de débit
Le serveur ou les API utilisent des bibliothèques de limitation de débit (par exemple, express-rate-limit, mod_evasive, etc.)
Des bots ou des robots d’indexation inondent le site web ou le point d’accès
Les serveurs envoient souvent un en-tête Retry-After avec une réponse 429 :
Cela indique au client combien de temps il doit attendre (en secondes) avant de réessayer.
Pour Apache :
Pour Nginx :
Cela permet d’identifier les IP ou les points d’extrémité qui déclenchent la limite.
Journaux de Fail2Ban
Événements du pare-feu Cloudflare
Journaux au niveau de l’application (Laravel, Express, Django, etc.)
Analyse des limites de taux (si vous utilisez une passerelle API)
Nginx peut être configuré comme suit :
Augmenter le taux ou le nombre de requêtes (burst)
Appliquer à des chemins spécifiques (par exemple, /api/) plutôt que globalement
Inscrire sur liste blanche les adresses IP internes connues
Si mod_evasive est actif :
Ajuster :
➡️ Augmentez les seuils ou désactivez-les pour des IP de confiance spécifiques.
Si vous êtes derrière Cloudflare, vérifiez :
Règles de limitation du débit dans Sécurité > WAF
Mode de lutte contre les bots
Règles de pare-feu bloquant sur la base de l’agent utilisateur ou de l’IP
Réduire la sensibilité
Mettre sur liste blanche les IP des serveurs ou certains agents utilisateurs
Créer des règles personnalisées pour les robots d’exploration et les partenaires sûrs
Vérifiez si votre application applique des limites à l’aide de bibliothèques telles que :
Node.js : express-rate-limit
Laravel : ThrottleRequests
Django : drf-extensions ou middleware
Mettez à jour la configuration, comme par exemple :
➡️ Ajustez les limites, ajoutez une liste blanche d’utilisateurs/IP ou augmentez le quota en fonction des jetons d’authentification.
Si votre application est le client et reçoit des 429 :
Réessayer automatiquement les demandes avec des délais croissants :
Limitez vos propres requêtes en cas de sondage :
Un statut 429 servi aux robots des moteurs de recherche peut nuire à votre classement.
Servez plutôt un état 503 (service indisponible) avec Retry-After
Utilisez le fichier robots.txt pour limiter le taux d’exploration :
Dans Cloudflare : Allez dans Bots > Crawl Management
Au lieu d’imposer des limites sévères à 429 :
Utiliser des CAPTCHAs pour les activités suspectes
Mettez en place des délais progressifs plutôt qu’un blocage brutal
Utilisez des limites de débit basées sur l’utilisateur plutôt que sur l’IP pour les utilisateurs connectés
Fournir un accès authentifié avec des limites de débit plus élevées (par exemple, via des clés API ou des jetons)
L’erreur 429 Too Many Requests est un outil utile mais parfois perturbant. Il est essentiel de comprendre d’où elle provient – serveur, CDN ou application – pour la résoudre. Grâce à une configuration adéquate, à la journalisation et au respect des limites côté client, il est possible de concilier protection et convivialité.