A faixa de bytes pedida está fora do arquivo.
Quando usar
Uma requisição Range além do fim do recurso.
Causas comuns e soluções
O cabeçalho Range pede bytes que o servidor não tem, geralmente além do fim do arquivo. A causa clássica é retomar um download com curl -C - ou wget -c quando o arquivo local já está completo, ou quando o arquivo remoto mudou de tamanho. O servidor responde com Content-Range: bytes */size, para que o cliente possa saber o tamanho real.
Corrija apagando o arquivo parcial e começando de novo, ou comparando os tamanhos antes. Players de vídeo recebem 416 quando um arquivo é substituído no meio do streaming ou quando uma CDN guardou em cache uma versão mais antiga e menor; limpe o cache. Os clientes devem enviar If-Range com o ETag, para que um arquivo alterado retorne 200 com o conteúdo completo em vez de 416. Os servidores também podem ignorar o Range e responder 200.
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 416 Range Not SatisfiableComo enviar
| Node.js / Express | res.status(416).end() |
|---|---|
| Python / Flask | return '', 416 |
| nginx | return 416; |
Como verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/