431 Request Header Fields Too Large (RFC 6585) oznacza, że serwer nie chce przetworzyć żądania, ponieważ pojedyncze pole nagłówka lub wszystkie nagłówki razem są zbyt duże. Klient może ponowić żądanie po zmniejszeniu rozmiaru nagłówków.
Najczęstszym winowajcą są pliki cookie: witryna i jej subdomeny ustawiają coraz więcej plików cookie, aż nagłówek Cookie przekroczy limit serwera. Przyczyną mogą być też bardzo długie adresy URL w nagłówku Referer lub duże tokeny uwierzytelniające. Node.js odpowiada na przykład kodem 431, gdy nagłówki przekraczają jego limit – programiści często trafiają na to na localhost, gdzie gromadzą się pliki cookie z wielu lokalnych projektów.
Nie każdy serwer używa kodu 431. nginx zwraca na przykład zamiast niego 400 Bad Request z komunikatem „Request Header Or Cookie Too Large”.
Przykładowa odpowiedź
HTTP/1.1 431 Request Header Fields Too Large
Connection: close SEO i sprawdzanie przekierowań
Roboty wysyłają małe nagłówki bez plików cookie, więc prawie nigdy nie wywołują błędu 431. Jeśli sprawdzanie przekierowań zwraca 431, zmniejsz rozmiar dodanych przez siebie własnych nagłówków lub plików cookie.
Typowe przyczyny i zastosowania
- Nagromadzone pliki cookie domeny i jej subdomen. Usuń je albo ogranicz liczbę i rozmiar ustawianych plików cookie.
- Duże tokeny JWT lub inne nagłówki autoryzacji.
- Bardzo długie nagłówki
Refererz adresów URL z ogromnymi ciągami zapytań. - Niski limit rozmiaru nagłówków na serwerze Node.js (
--max-http-header-size), w serwerze proxy lub w load balancerze.