2011-06-01 10 views
8

¿Cuál es la respuesta correcta a una solicitud GET con el campo de encabezado Range: bytes=278528- si Range no es compatible?HTTP: ¿Cómo debo responder a "Range: bytes =" cuando Range no es compatible?

la lectura de la definición de la cabecera HTTP (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) Creo que debería al menos mencionar: Accept-Ranges: none, pero establece claramente que

Los clientes pueden generar solicitudes de intervalo de bytes sin haber recibido esta cabecera para el recurso en cuestión.

lo tanto, si un cliente solicita un rango, en caso de que:

+0

La condenación eterna parece un poco severo. –

Respuesta

7

Puede ignorarlo, como dice la especificación. Para ser precisos:

  • Si lo admite, devuelve un código de estado de 206 Partial Content e incluye los encabezados adecuados, como Content-Range.
  • Si no lo admite, devuelve un 200 OK como de costumbre.

No he probado esto, pero la especificación parece bastante clara. He visto este trabajo: el uso de wget o curl para reanudar una descarga interrumpida se reiniciará correctamente desde el principio si el servidor no admite el encabezado del rango.

+2

Lástima que el cliente también me ignora ignorándolo. MediaPlayer de Android en teléfonos LG/Motorola (OMXPlayer) se bloquea si devuelve un 200 con todo el cuerpo :( – Joernsn

0

Las solicitudes de rango de ignorancia pueden hacer que el contenido de reproducción (que es enorme) en el servicio de difusión aérea u otro inestable o inaceptable. Sé que no es http protokol derecho de transferir vídeo, pero trate de enviar vídeo a AirPlay desde un servidor no aceptar rangos .... Airplay utiliza peticiones de rango ...

0

La posibilidad es comprobar el encabezado HTTP y si hay es una cadena de rango, la analiza, analiza los rangos, calcula las posiciones de omisión y toma, abre la secuencia de archivos desde la url, luego, busca omitir y tomar 'tomar' bytes, configurar su respuesta, enviar respuesta y finalmente cerrar la transmisión. no se olvide de responder con cabecera gama

no ignoran la estufa, nunca cuando se está trabajando en las grandes corrientes.

si está utilizando nanohttp, puedo ayudarle a cabo con el ejemplo

Cuestiones relacionadas