URL jest dłuższy, niż serwer jest w stanie obsłużyć.
Kiedy go używać
Ogromne query stringi. Przenieś dane do treści żądania POST.
Typowe przyczyny i rozwiązania
URL żądania przekracza limit. Typowe powody: ogromne query stringi budowane z filtrów lub list ID, dane base64 w URL-u, pętle przekierowań, które w każdej rundzie dopisują parametr (returnUrl zagnieżdżony w returnUrl), oraz nagromadzone parametry śledzące. nginx odpowiada 414, gdy linia żądania nie mieści się w large_client_header_buffers, domyślnie 8k, a LimitRequestLine w Apache to 8190 bajtów.
Dla bezpieczeństwa trzymaj URL-e poniżej ok. 2000 znaków, żeby działały w przeglądarkach, CDN-ach, narzędziach analitycznych i narzędziach do logów; Cloudflare ogranicza URL-e do 16 KB. Rozwiązaniem jest przeniesienie danych do treści POST albo wysłanie filtra do endpointu wyszukiwania, który zwraca krótkie ID do umieszczenia w URL-u. Podniesienie limitów serwera działa, ale każde proxy w łańcuchu ma własny limit.
Błąd klienta (4xx)
Kody 4xx to błędy klienta: samo żądanie jest błędne, nieautoryzowane albo wskazuje na coś, czego nie ma. Ponowienie tego samego żądania nic nie da.
Jak to wygląda
HTTP/1.1 414 URI Too LongJak go wysłać
| Node.js / Express | res.status(414).end() |
|---|---|
| Python / Flask | return '', 414 |
| nginx | return 414; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/