Calculadora Range HTTP
Revise un tramo de bytes antes de enviarlo: 0-499 en un archivo de 10000 bytes son los primeros 500 bytes, un tramo válido que recibe 206 Partial Content y la línea bytes 0-499/10000. También admite tramos abiertos y de últimos bytes. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Modo de cálculo
- Parse
- Encabezado Range
- bytes=0-499
- Tamaño del recurso
- 10 000
- Cantidad de rangos
- 1 bytes
- Sugerencia de estado
- 206
- Bytes solicitados
- 500
- Content-Range
- bytes 0-499/10000
Escribir bytes=inicio-fin a mano parece sencillo hasta que necesita la forma sufijo, extremos abiertos, conjuntos multipartitos o una línea Content-Range que coincida con el tamaño real del fichero. La validación fallida no se factura.
Tres maneras de pedir parte de un archivo
Una cabecera Range le dice al servidor qué bytes de un archivo quiere en lugar del archivo entero. La forma cerrada da un inicio y un final, ambos incluidos, así que 0-499 son los primeros 500 bytes. La forma abierta da solo el inicio, como 500-, y llega hasta el último byte: así se reanuda una descarga interrumpida justo donde se cortó. La forma de sufijo, como -500, pide los últimos 500 bytes cuando se sabe cuánto falta pero no la posición. Puede combinar hasta 32 tramos en una cabecera, separados por comas.
Cómo comprobar un tramo contra el tamaño real
Si indica el tamaño del archivo, cada tramo se convierte en posiciones absolutas: los finales abiertos se cierran en el tamaño menos uno, los sufijos pasan a ser la ventana final y un tramo que empieza después del final se marca como no satisfacible. Si todos encajan, la respuesta esperable es 206 Partial Content; si no, 416 Range Not Satisfiable. Para un único tramo válido obtiene además la línea Content-Range correspondiente, como bytes 0-499/10000 para los primeros 500 bytes de un archivo de 10000. Puede pegar una cabecera completa o construirla a partir de un inicio, un final o un sufijo.
Qué pide una cabecera Range y qué formas se aceptan
Según RFC 9110, la unidad habitual es bytes, y el valor tras el signo igual es un conjunto de especificaciones de rango separadas por comas. Un rango abierto inicio- significa desde ese desplazamiento hasta el último byte de la representación actual. Un rango sufijo -N significa los últimos N bytes, forma que usan los gestores de descarga cuando conocen cuánto falta pero no el desplazamiento absoluto.
Esta calculadora acepta una línea Range completa o la forma unidad=rangos, normaliza la unidad a bytes en minúsculas, elimina espacios opcionales y rechaza cualquier unidad distinta de bytes. Se permiten conjuntos multipartitos de hasta treinta y dos partes para lecturas dispersas sin inventar un mini-lenguaje.
Qué puede hacer con ella
Reanudar descargas interrumpidas
Construya o analice rangos bytes=inicio- frente a un tamaño de fichero conocido para que un cliente reanude exactamente donde se detuvo la transferencia anterior, sin solapes ni huecos.
Seek multimedia y lecturas parciales
Calcule cabeceras Range cerradas o abiertas para scrubbing de vídeo y audio, y verifique 206 frente a 416 antes de enviar la petición al origen o a la CDN.
Preguntas frecuentes
¿Qué pide un tramo 0-499?
Los primeros 500 bytes. Un tramo cerrado incluye sus dos extremos, así que 0-499 va del byte 0 al byte 499. Si se tomara el final como excluido, se quedaría fuera el último byte.
¿Cómo pido la parte final de un archivo?
Con la forma de sufijo, un signo menos seguido de un número, como -500 para los últimos 500 bytes. Los gestores de descargas la usan cuando saben cuánto falta pero no la posición exacta de inicio.
¿Cuándo un tramo no se puede satisfacer?
Cuando empieza más allá del final del archivo. Si indica el tamaño, ese tramo se marca como no satisfacible y la respuesta esperable es 416 Range Not Satisfiable, junto con una línea Content-Range que declara el tamaño real.
¿Cuántos tramos caben en una cabecera?
Hasta 32, separados por comas, así que puede pedir varios trozos dispersos de un archivo a la vez. Solo se acepta la unidad bytes, y cualquier otra unidad se rechaza.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/http-range-header \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"parse"}'const res = await fetch("https://api.kit.forhosting.com/dev/http-range-header", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "parse"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/http-range-header",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "parse"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/http-range-header", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"parse"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"parse"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/http-range-header", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"mode": "parse"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.http_range_header",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Las descargas parciales, el seek de vídeo y la reanudación tras una interrupción dependen de la cabecera de petición HTTP Range. Esta calculadora de cabecera Range HTTP acepta un valor Range para analizarlo o campos discretos de inicio, fin y sufijo para construirlo, y devuelve rangos estructurados con longitudes, satisfacibilidad opcional frente al tamaño del recurso, una pista de estado 206 o 416 y una cadena Content-Range cuando se conoce un único rango satisfacible. Úsela cuando desee aritmética de bytes determinista sin montar una pila HTTP completa solo para comprobar una cabecera.
Qué significa una cabecera HTTP Range y qué formas acepta esta herramienta
Una petición HTTP Range indica al servidor qué intervalos de bytes de una representación desea el cliente en lugar del cuerpo completo. Un rango cerrado inicio-fin es inclusivo en ambos extremos, de modo que bytes=0-499 pide los primeros quinientos bytes. Cuando suministra resource_size, cada especificación se resuelve a desplazamientos absolutos de inicio y fin: los extremos abiertos se cierran en tamaño menos uno, los sufijos se convierten en la ventana final y los rangos cerrados que empiezan más allá del final del fichero se marcan como no satisfacibles. Cuando todo rango resuelto es satisfacible y el recurso no está vacío, status_hint es 206 Partial Content; en caso contrario es 416 Range Not Satisfiable con Content-Range bytes asterisco barra tamaño, como responden los orígenes cuidadosos ante reanudaciones incorrectas.
Contrato de entrada, construir frente a analizar, y campos de respuesta
Establezca mode en parse o build. En modo parse, range_header es obligatorio y puede verse como bytes=0-499, Range: bytes=500- o multipartito bytes=0-0,-1. En modo build proporcione suffix_length para la forma últimos-N, o start con un end inclusivo opcional para formas cerradas o abiertas; no mezcle suffix_length con start o end. resource_size es opcional en ambos modos: omítalo si solo necesita normalización sintáctica y longitudes de rangos cerrados; inclúyalo cuando necesite banderas satisfiable, bytes_requested frente a un fichero real, content_range y status_hint. Los enteros deben ser enteros seguros no negativos; suffix_length debe ser al menos uno. En éxito el cuerpo siempre incluye mode, el range_header canónico, unit bytes, range_count y un array ranges. Cada objeto de rango lleva kind (closed, open_end o suffix), la cadena raw y, cuando se conocen, start, end, length, suffix y satisfiable. El bytes_requested de nivel superior es la suma de longitudes resueltas cuando todas se conocen. content_range se emite para un único rango satisfacible como bytes inicio-fin barra tamaño, o como bytes asterisco barra tamaño si no es satisfacible. Cabeceras inválidas, modos incorrectos y combinaciones inconsistentes fallan con invalid_input y no se facturan. Ejemplo: analizar bytes=0-499 con resource_size diez mil produce longitud quinientos, content_range bytes 0-499/10000 y status_hint 206.
Dónde una calculadora HTTP Range aporta valor real
Los gestores de descarga e instaladores reanudan artefactos grandes reenviando cabeceras Range tras un corte de red; una calculadora compartida evita errores de uno que vuelven a descargar un ISO completo o saltan una página crítica de un PDF. Los reproductores que buscan dentro de MP4 progresivo o audio construyen rangos abiertos o cerrados y deben saber si el origen responderá 206 o 416 antes de pintar la barra de progreso. Las pruebas de pasarelas API y de configuración CDN comprueban que las reglas de borde reenvían y recortan rangos correctamente frente a tamaños de objeto conocidos sin levantar un origen completo. Como la implementación es parse pura de nivel A, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente. Mantenga resource_size honesto, fije los rangos estructurados en las pruebas y obtendrá aritmética de reanudación reproducible para workers de borde, herramientas CLI y laboratorios HTTP de aula sin enviar una pila completa solo para contar bytes.
Casos de integración
Fixtures de pasarela y SDK
Genere cadenas canónicas Range y Content-Range en pruebas automatizadas para que las reglas de borde y las bibliotecas de cliente coincidan en formas multipartitas y de sufijo.
Preguntas técnicas
¿Qué formas de Range admite la calculadora de cabecera HTTP Range?
Solo la unidad bytes: cerrado inicio-fin, abierto inicio- y sufijo -N, incluidos conjuntos multipartitos separados por comas de hasta 32 partes. Otras unidades se rechazan.
¿Cómo construyo un Range de los últimos N bytes?
Establezca mode en build y pase suffix_length (por ejemplo 500) para emitir bytes=-500. No envíe start ni end junto con suffix_length.
¿Cuándo es status_hint 206 y cuándo 416?
Cuando se proporciona resource_size y todo rango resuelto es satisfacible en un recurso no vacío, status_hint es 206. Si el recurso está vacío o algún rango empieza más allá del final, es 416.
¿Necesito resource_size para analizar una cabecera?
No. Sin resource_size obtiene range_header normalizado, kinds y longitudes de rangos cerrados. Extremos abiertos y sufijos necesitan un tamaño para resolver desplazamientos absolutos y el total bytes_requested.
¿Cuánto cuesta la calculadora de cabecera HTTP Range?
La herramienta del navegador es gratuita. Las peticiones a la API usan saldo prepago KIT a $0.002 por llamada exitosa; la entrada inválida no se factura.