Preguntas

Error 416 – Rango solicitado no satisfacible (Range Not Satisfiable) Imprimir

  • 0

El error 416 aparece cuando el cliente solicita una parte específica (un rango) de un archivo o recurso usando la cabecera Range, pero ese rango no puede ser cumplido por el servidor.

Es decir: el cliente pidió bytes fuera del tamaño real del archivo, o el servidor no puede servir ese rango.

Este error es muy común en:

  • Descargas

  • Videos y audios con reproducción parcial

  • APIs de archivos

  • Peticiones que requieren rangos (Resume download)


 Causas más comunes

  •  El rango solicitado excede el tamaño real del archivo.
    Ejemplo: pedir bytes del 5000–6000 en un archivo de solo 4000 bytes.

  •  Clientes multimedia piden rangos incorrectos al hacer “seek” en videos o audios.

  •  El archivo está vacío o tiene tamaño 0 (no se puede servir nada).

  •  El servidor no tiene habilitado el soporte para rangos (Accept-Ranges).

  •  Descargas interrumpidas que intentan reanudarse con un rango inválido.

  •  Manipulación errónea de la cabecera Range por parte del navegador o una app.

  •  El archivo fue modificado después de iniciar la descarga, causando inconsistencias.


 Soluciones recomendadas

1) Verificar el tamaño real del archivo

Si el cliente solicita:

 
Range: bytes=7000-9000

pero el archivo mide 6900 bytes → 416.

Solución:
Calcular y pedir un rango válido.


2) Habilitar soporte de rangos en el servidor

Apache:

Asegúrate de que no esté deshabilitado:

 
Accept-Ranges: bytes

Nginx:

Debe tener:

 
aio on;

y permitir rangos correctamente.


3) Evitar reanudar descargas corruptas

Si un cliente intenta continuar una descarga:

 
Range: bytes=350000-

pero el archivo cambió o tiene otro tamaño → 416.

Solución: volver a descargar desde cero.


4) Revisar servidores de streaming

Errores comunes en:

  • Videos MP4

  • Audio MP3

  • Streaming HLS / DASH

Asegúrate de que el archivo no esté dañado ni incompleto.


5) Corregir peticiones en aplicaciones o APIs

Ejemplos de rangos mal formados:

 
Range: bytes=-100 Range: bytes=abc-xyz Range: bytes=999999999-

Debes validar la entrada antes de enviarla.


6) Verificar que el archivo no esté vacío

Si size = 0, cualquier rango es inválido → 416.

Solución:
Revisar por qué el archivo está vacío o incompleto.


7) Enviar respuesta correcta de error

El servidor debe incluir:

 
Content-Range: */<tamaño_del_archivo>

Ejemplo:

 
Content-Range: */4096

Esto indica cuál es el rango válido máximo.


 Consejo Pro

Cuando implementes descargas o streaming:

  • Valida rangos por adelantado

  • Usa chunks (fragmentos) de tamaño fijo

  • Implementa reanudación segura

  • Siempre devuelve cabeceras Accept-Ranges y Content-Range correctas

Esto evita errores 416 y mejora la experiencia de descarga y reproducción.


¿Fue útil la respuesta?
Volver