Re: Multiple Range headers in an HTTP request

On Thu, 10 Sep 2009 11:36:56 +0200, Raphaël Troncy <Raphael.Troncy@cwi.nl>  
wrote:

> Hi Philip
>
>> I don't know what the specs say, but I did a little experiment with nc  
>> (netcat):
>
> Thanks for the tests! During a previous chat with Yves, he told me that  
> it is fine w.r.t. the spec to have multiple Range headers, and indeed,  
> the answer should be a mime multipart. However, it is a pain to  
> implement :-( It is also fine to have multiple Range headers in  
> different units, but until now, there is only one unit (bytes)  
> implemented :-)
>
> Regarding your tests:
>
>> A:
>> Range: bytes=0-99
>>  B:
>> Range: bytes=0-99
>> Range: bytes=100-199
>>  C:
>> Range: bytes=0-99
>> Range: seconds=10-20
>>  D:
>> Range: seconds=10-20
>> Range: bytes=0-99
>>  Apache 2.2:
>> A: Content-Range: bytes 0-99
>> B: Content-Range: bytes 0-99 (multipart)
>
> Shouldn't be:
> B: Content-Range: bytes 0-199 (multipart) ?

I don't know what it SHOULD be, but here's the hand-crafted request:

GET /uih/Uproar%20in%20Heaven.srt HTTP/1.1
Host: foolip.org
Range: bytes=0-99
Range: bytes=100-199

and the reply:

HTTP/1.1 206 Partial Content
Date: Thu, 10 Sep 2009 11:11:20 GMT
Server: Apache/2.2.11 (Ubuntu)
Last-Modified: Thu, 23 Feb 2006 17:00:56 GMT
ETag: "30a8007-881c-40d7930192200"
Accept-Ranges: bytes
Content-Length: 209
Content-Type: multipart/byteranges; boundary=473374258cb9c3592


--473374258cb9c3592
Content-type: text/plain
Content-range: bytes 0-99/34844

1
00:00:01,839 --> 00:00:09,837
Shanghai Arts and Films Studio

2
00:00:54,279 --> 00:00:56,713
--473374258cb9c3592--

So no, Apache didn't collapse the ranges. (I didn't even consider the  
possibility when doing the test, I should have chosen uncontiguous ranges  
for clarity.)

>> C: Content-Range: bytes 0-99 (multipart)
>> D: 200 OK (full resource)
>
> D is interesting. If Apache does not understand the first Range header,  
> then it ignores the following ones?

It would seem so.

>> IIS 5.0:
>> A: Content-Range: bytes 0-99
>> B: 200 OK (full resource)
>> C: 200 OK (full resource)
>> D: 200 OK (full resource)
>
> I'm not really surprised of the IIS 5.0 behavior.
> Kilroy, since you're listening to this list, would you like to comment  
> on this test? Is it purposely that IIS does not implement the case where  
> a HTTP request contains multiple Range headers?
> Cheers.
>
>    Raphaël
>


-- 
Philip Jägenstedt
Core Developer
Opera Software

Received on Thursday, 10 September 2009 11:15:10 UTC