206 Partial Content y las solicitudes de rango en HTTP
206 Partial Content significa que el servidor envía solo el rango de bytes que pidió el cliente, como en los reproductores de vídeo y las descargas reanudables.
206 Partial Content significa que el servidor envía solo una parte de un archivo porque el cliente pidió un rango concreto de bytes. Así es como los reproductores de vídeo saltan a otro punto, los gestores de descargas reanudan y los visores de PDF obtienen una parte del documento cada vez.
Definición
La RFC 9110, sección 15.3.7 dice que el servidor está “cumpliendo con éxito una solicitud de rango” al transferir una o varias partes de la representación. El cliente envía una cabecera Range; el servidor responde con Content-Range, que indica qué bytes envió, o con un cuerpo multipart/byteranges si son varios rangos. Los servidores anuncian que lo admiten con Accept-Ranges: bytes, y un rango que no se puede servir recibe 416 Range Not Satisfiable.
GET /media/intro.mp4 HTTP/1.1
Host: www.example.com
Range: bytes=0-1048575
HTTP/1.1 206 Partial Content
Content-Type: video/mp4
Content-Range: bytes 0-1048575/48211533
Content-Length: 1048576
Accept-Ranges: bytes
Dónde importa admitir rangos
- Vídeo y audio: los reproductores piden rangos para arrancar rápido y para desplazarse por el contenido. Safari, en concreto, espera que los archivos de vídeo admitan rangos.
- Descargas grandes que deben reanudarse tras una conexión interrumpida.
- PDF abiertos en el visor del navegador.
Apache y Nginx gestionan los rangos de los archivos estáticos sin configuración adicional. Los problemas suelen venir del código de la aplicación que transmite archivos sin leer Range, o de proxies que lo eliminan.
Impacto en el SEO
Un 206 es la respuesta normal a una solicitud de rango, así que no es un error. El riesgo es el contrario: un servidor o una caché que envía 206 y un fragmento ante una solicitud sin cabecera Range. Entonces un rastreador que pide tu HTML recibe una página truncada. Un GET normal de una página debe devolver 200 con el documento completo. La documentación de Google sobre códigos de estado no trata el 206, así que no cuentes con un tratamiento especial. (No lo confundas con 304 Not Modified, que no envía ningún cuerpo porque la copia en caché del cliente sigue vigente.)
Cómo comprobarlo
El comprobador de cabeceras HTTP muestra si un archivo anuncia Accept-Ranges: bytes, y el comprobador de códigos de estado HTTP confirma que una solicitud normal devuelve 200. Para probar tú mismo un rango:
curl -s -o /dev/null -w "%{http_code}\n" -r 0-1023 https://www.example.com/media/intro.mp4
206 Preguntas frecuentes
¿206 Partial Content es un error?
No. Es una respuesta de éxito a una solicitud de rango, que se usa en el streaming de vídeo, las descargas reanudables y los visores de PDF.
¿Por qué mi vídeo no se reproduce o no avanza en Safari?
Una causa habitual es un servidor o script que ignora la cabecera Range y siempre envía el archivo completo con 200. Asegúrate de servir los archivos multimedia con soporte de rangos para que el servidor pueda responder 206.
¿Una respuesta 206 puede perjudicar al SEO?
Solo si un servidor envía 206 y una página parcial a una solicitud normal sin cabecera Range, de modo que los rastreadores reciben un HTML truncado. Las solicitudes normales de página deben recibir 200 y el documento completo.