411 Length Required

É necessário um cabeçalho Content-Length.

Quando usar

Uploads sem tamanho declarado.

Causas comuns e soluções

O servidor recusa uma requisição que tem corpo, mas não tem o cabeçalho Content-Length. Isso acontece quando um cliente faz streaming com Transfer-Encoding: chunked para um servidor ou proxy que rejeita uploads chunked, ou envia um POST sem corpo e sem tamanho nenhum. O Google Cloud Storage e alguns servidores mais antigos são famosos por exigir Content-Length: 0 em requisições POST vazias.

Corrija no cliente: coloque o corpo em buffer para que a biblioteca possa definir o tamanho, ou defina o cabeçalho você mesmo. O curl -d define o Content-Length automaticamente, mas curl -X POST sem dados não envia nenhum, então adicione -H Content-Length:0. Os frames do HTTP/2 e do HTTP/3 marcam o fim do corpo, então o problema é específico do HTTP/1.1. O nginx aceita corpos de requisição chunked desde a versão 1.3.9.

Erro do cliente (4xx)

Os códigos 4xx são erros do cliente: a própria requisição está errada, não está autorizada ou aponta para algo que não existe. Repetir a mesma requisição não vai adiantar.

Como fica

HTTP/1.1 411 Length Required

Como enviar

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

Como verificar

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

Abrir Códigos de status HTTP