206 Partial Content

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 Content

Como enviar

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

Como verificar

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

Abrir Códigos de status HTTP