Solo se devuelve una parte del recurso.
Cuándo usarlo
Al responder a una solicitud Range, para streaming de vídeo o descargas reanudables.
A tener en cuenta
Los servidores envían 206 solo cuando el cliente lo pide con una cabecera Range, como Range: bytes=0-1023, y el servidor admite rangos, algo que anuncia con Accept-Ranges: bytes. La respuesta lleva Content-Range: bytes 0-1023/146515 con el tamaño total. Safari e iOS exigen compatibilidad con rangos para el vídeo: si tu servidor ignora Range y devuelve 200, la reproducción de MP4 suele fallar directamente.
Las solicitudes más allá del final del archivo reciben 416. Varios rangos en una misma solicitud vuelven como multipart/byteranges. Los rangos se aplican a los bytes codificados, así que los servidores no suelen usar gzip para los archivos multimedia. Detrás de una CDN, comprueba que las solicitudes parciales se almacenan en caché y se sirven correctamente, sin pasarlas al origen cada vez. Prueba con curl -r 0-99 -i, y las descargas reanudables con curl -C - -O.
Éxito (2xx)
Los códigos 2xx indican éxito: el servidor recibió, entendió y aceptó la solicitud.
Cómo se ve
HTTP/1.1 206 Partial ContentCómo enviarlo
| Node.js / Express | res.status(206).end() |
|---|---|
| Python / Flask | return '', 206 |
| nginx | return 206; |
Cómo comprobarlo
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/