Re: time range request/response syntax (Re: minutes of 2009-09-17 F2F meeting, Day 1)

2009/9/23 Raphaël Troncy <Raphael.Troncy@cwi.nl>:
>> I think we should be consistent and have the Range request also
>> contain the dimension, like so:
>>
>> Range: <dimension>[':' <unit>] '=' <start time> - <end time>
>
> On one side, this is indeed consistent with the Content-Range counterpart
> header
> On the other side, it is slightly different that the current Range request
> that one can express in bytes, e.g.:
>  Range: bytes 1113724-2082711
> so rather:
>  Range: <unit> ' ' <start byte> '-' <end byte>
>
> Well, I just realize that there is also the use of '=' versus ' ' that
> differ.
> Let's vote on that today?

OK.

Just to be informed: here are the relevant extracts from RFC2616 (HTTP/1.1):

* Accept-Ranges Header
      range-unit       = bytes-unit | other-range-unit
      bytes-unit       = "bytes"
      other-range-unit = token
      Accept-Ranges     = "Accept-Ranges" ":" acceptable-ranges
      acceptable-ranges = 1#range-unit | "none"

      Example: "Accept-Ranges: bytes"


* Content-Range Header
       Content-Range = "Content-Range" ":" content-range-spec
       content-range-spec      = byte-content-range-spec
       byte-content-range-spec = bytes-unit SP
                                 byte-range-resp-spec "/"
                                 ( instance-length | "*" )
       byte-range-resp-spec = (first-byte-pos "-" last-byte-pos)
                                      | "*"
       instance-length           = 1*DIGIT

      Example: "Content-Range: bytes 21010-47021/47022"


* Range Header
       ranges-specifier = byte-ranges-specifier
       byte-ranges-specifier = bytes-unit "=" byte-range-set
       byte-range-set  = 1#( byte-range-spec | suffix-byte-range-spec )
       byte-range-spec = first-byte-pos "-" [last-byte-pos]
       first-byte-pos  = 1*DIGIT
       last-byte-pos   = 1*DIGIT
       suffix-byte-range-spec = "-" suffix-length
       suffix-length = 1*DIGIT
       Range = "Range" ":" ranges-specifier

       Example: "Range: bytes=500-600,601-999"


So, firstly, the "Range" header does indeed use a "=".

Secondly, neither Content-Range nor Range are extensible per spec to
other range units, even though Accept-Ranges is. All the RFC says is
"The only range unit defined by HTTP/1.1 is "bytes". HTTP/1.1
implementations MAY ignore ranges specified using other units." .
However, I remember that Yves mentioned that there are discussions
under way to extend this. I found
http://osdir.com/ml/ietf.http-wg/2008-07/msg00142.html and it seems to
indicate the following change:

Content-Range = "Content-Range" ":" content-range-spec
content-range-spec = byte-content-range-spec / ext-content-range- spec
ext-content-range-spec = other-range-unit SP CHAR*

I think we can extend that to the Range header, too.

This means, we can define what "other-range-unit" means and what CHAR*
means. So, we are actually flexible how to structure the range unit
spec and it would easily cover <dimension>[':' <unit>].

In summary, I don't think there is an issue with using:
Range: <dimension>[':' <unit>] '=' <start time> - <end time>


Best Regards,
Silvia.

Received on Wednesday, 23 September 2009 08:47:48 UTC