411 Length Required

Wymagany jest nagłówek Content-Length.

Kiedy go używać

Przesyłanie bez zadeklarowanego rozmiaru.

Typowe przyczyny i rozwiązania

Serwer odrzuca żądanie, które ma treść, ale nie ma nagłówka Content-Length. Dzieje się tak, gdy klient wysyła dane strumieniowo z Transfer-Encoding: chunked do serwera lub proxy, które odrzuca przesyłanie w trybie chunked, albo wysyła POST bez treści i w ogóle bez długości. Google Cloud Storage i niektóre starsze serwery słyną z tego, że wymagają Content-Length: 0 przy pustych żądaniach POST.

Napraw to po stronie klienta: zbuforuj treść, żeby biblioteka mogła ustawić długość, albo ustaw nagłówek samodzielnie. curl -d ustawia Content-Length automatycznie, ale curl -X POST bez danych nie wysyła go wcale, więc dodaj -H Content-Length:0. Ramki HTTP/2 i HTTP/3 oznaczają koniec treści, więc problem dotyczy tylko HTTP/1.1. nginx akceptuje treści żądań w trybie chunked od wersji 1.3.9.

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 411 Length Required

Jak go wysłać

Node.js / Expressres.status(411).end()
Python / Flaskreturn '', 411
nginxreturn 411;

Jak go sprawdzić

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Otwórz narzędzie Kody statusu HTTP