Treść żądania jest większa, niż serwer akceptuje.
Kiedy go używać
Przesyłane pliki przekraczające limit rozmiaru.
Typowe przyczyny i rozwiązania
Treść jest większa, niż pozwala któraś warstwa, i często nie jest to Twoja aplikacja. nginx domyślnie ustawia client_max_body_size na 1m, więc przesyłanie plików powyżej 1 MB kończy się 413, dopóki nie zwiększysz limitu w bloku http, server lub location. Cloudflare ogranicza treść żądań do 100 MB w planach Free i Pro, AWS API Gateway do 10 MB, a synchroniczne payloady Lambdy do 6 MB.
Potem sprawdź aplikację: express.json w Expressie ma domyślnie limit 100kb, a PHP ma upload_max_filesize (domyślnie 2M) i post_max_size (8M). Pamiętaj o przeładowaniu nginx lub PHP-FPM po zmianie limitów. Duże pliki przesyłaj bezpośrednio do object storage przez presigned URL-e albo dziel je na części, zamiast podnosić każdy limit po drodze.
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 413 Content Too LargeJak go wysłać
| Node.js / Express | res.status(413).end() |
|---|---|
| Python / Flask | return '', 413 |
| nginx | return 413; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/