Só parte do recurso é retornada.
Quando usar
Ao responder a uma requisição Range, para streaming de vídeo ou downloads retomáveis.
Bom saber
Os servidores só enviam 206 quando o cliente pede com um cabeçalho Range, como Range: bytes=0-1023, e o servidor suporta intervalos, o que é anunciado com Accept-Ranges: bytes. A resposta traz Content-Range: bytes 0-1023/146515 com o tamanho total. O Safari e o iOS exigem suporte a intervalos para vídeo: se o seu servidor ignora o Range e retorna 200, a reprodução de MP4 muitas vezes falha de vez.
Requisições além do fim do arquivo recebem 416. Vários intervalos em uma requisição voltam como multipart/byteranges. Os intervalos se aplicam aos bytes codificados, então os servidores geralmente não usam gzip para mídia. Atrás de uma CDN, verifique se as requisições parciais são armazenadas em cache e servidas corretamente, e não repassadas para a origem toda vez. Teste com curl -r 0-99 -i, e downloads retomáveis com curl -C - -O.
Sucesso (2xx)
Os códigos 2xx indicam sucesso: o servidor recebeu, entendeu e aceitou a requisição.
Como fica
HTTP/1.1 206 Partial ContentComo enviar
| Node.js / Express | res.status(206).end() |
|---|---|
| Python / Flask | return '', 206 |
| nginx | return 206; |
Como verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/