Respuesta del servidor 416 Range Not Satisfiable
Código de estado HTTP 416 (Rango no satisfactible)
El código de estado HTTP 416 indica que el rango solicitado por el cliente no puede ser satisfecho por el servidor. Esto ocurre cuando el cliente intenta acceder a una parte de un recurso, pero el rango especificado se encuentra fuera de los límites de los datos disponibles. A continuación, se analizan las causas de este código de estado, ejemplos prácticos y métodos de corrección en distintos lenguajes de programación.
Causas de la aparición del código de estado 416
- Rango incorrectamente especificado
El cliente puede cometer errores al especificar el rango, por ejemplo, solicitando un rango que excede el tamaño del archivo disponible. Esto puede suceder si el cliente no verifica la longitud del recurso antes de hacer la solicitud.
- Falta de datos en el servidor
El recurso solicitado puede haber sido eliminado o modificado, resultando en un rango solicitado que excede los datos disponibles. En estos casos, el servidor no puede cumplir con la solicitud ya que el contenido ya no existe.
- Encabezados incorrectos
Los encabezados Range mal configurados pueden provocar errores. Si el cliente envía un encabezado mal formado, el servidor no podrá interpretar correctamente el rango solicitado.
Ejemplos prácticos
- Ejemplo con un archivo de audio
Un cliente solicita un rango que excede la duración del archivo de audio. El siguiente es un ejemplo del encabezado de solicitud y la respuesta del servidor:
GET /audio.mp3 HTTP/1.1 Range: bytes=1000000- HTTP/1.1 416 Range Not Satisfiable
- Ejemplo con una imagen
El cliente intenta obtener una parte de una imagen que ha sido modificada, y no está al tanto de los nuevos tamaños:
GET /image.jpg HTTP/1.1 Range: bytes=5000-10000 HTTP/1.1 416 Range Not Satisfiable
- Ejemplo con un archivo de texto
El cliente hace una solicitud para un archivo de texto, pero el rango solicitado está fuera de los límites del archivo:
GET /document.txt HTTP/1.1 Range: bytes=2000-3000 HTTP/1.1 416 Range Not Satisfiable
Corrección del error 416 en diferentes lenguajes de programación
Lenguaje | Descripción | Ejemplo de código |
---|---|---|
Python | Verificación de la validez del rango antes de enviar la solicitud. |
import requests def request_range(url, start, end): headers = {'Range': f'bytes={start}-{end}'} response = requests.get(url, headers=headers) if response.status_code == 416: print("Error: Rango no satisfactible.") |
JavaScript | Uso de Fetch API para solicitar un rango y manejar la respuesta 416. |
fetch('https://example.com/file.mp3', { headers: {'Range': 'bytes=0-999'} }).then(response => { if (response.status === 416) { console.error("Error: Rango no satisfactible."); } }); |
PHP | Realización de una solicitud cURL con el encabezado Range y manejo del estado 416. |
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://example.com/file.txt'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Range: bytes=1000-2000')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) { echo "Error: Rango no satisfactible."; } |
El código de estado 416 señala problemas relacionados con la indisponibilidad del rango de datos solicitado. Para evitar este estado, es crucial especificar correctamente los rangos y manejar adecuadamente los errores en el lado del cliente.