431 Request Header Fields Too Large (RFC 6585) signifie que le serveur refuse de traiter la requête parce qu’un champ d’en-tête, ou l’ensemble des en-têtes, est trop volumineux. Le client peut réessayer après avoir réduit la taille des en-têtes.
Les cookies sont généralement en cause : un site et ses sous-domaines définissent de plus en plus de cookies, jusqu’à ce que l’en-tête Cookie dépasse la limite du serveur. Des URL Referer très longues et de gros jetons d’authentification peuvent aussi le provoquer. Node.js, par exemple, répond 431 lorsque les en-têtes dépassent sa limite, ce qui arrive souvent aux développeurs sur localhost, où s’accumulent les cookies de nombreux projets locaux.
Tous les serveurs n’utilisent pas le code 431 : nginx, par exemple, renvoie à la place 400 Bad Request avec « Request Header Or Cookie Too Large ».
Exemple de réponse
HTTP/1.1 431 Request Header Fields Too Large
Connection: close SEO et vérification des redirections
Les robots d’exploration envoient des en-têtes légers, sans cookies : ils ne déclenchent donc presque jamais de 431. Si une vérification des redirections renvoie 431, réduisez la taille des en-têtes personnalisés ou des cookies que vous avez ajoutés.
Causes fréquentes et cas d’usage
- Des cookies se sont accumulés pour un domaine et ses sous-domaines. Supprimez-les, ou définissez des cookies moins nombreux et plus petits.
- De gros JWT ou d’autres en-têtes d’autorisation volumineux.
- Des en-têtes
Referertrès longs, issus d’URL aux chaînes de requête énormes. - Une limite de taille d’en-têtes basse dans un serveur Node.js (
--max-http-header-size), un proxy ou un répartiteur de charge.