Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTTP: How should I respond to "Range: bytes=" when Range is unsupported?

What is the correct response to a GET request with the header field Range: bytes=278528- if Range is not supported?

Reading the HTTP header definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) i think i should at least set: Accept-Ranges: none, but it clearly states that

Clients MAY generate byte-range requests without having received this header for the resource involved.

So, if a client requests a range, should I:

  • Reply with the whole file from byte 0?
  • Reply with some status error? (400/406/416/501) see: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
like image 503
Joernsn Avatar asked Jun 01 '11 16:06

Joernsn


2 Answers

You may ignore it, as the spec says. To be precise:

  • If you support it, you return a status code of 206 Partial Content and include the proper headers like Content-Range.
  • If you don’t support it, you return a 200 OK as normal.

I have not tested this, but the spec seems pretty clear. I have seen this work — using wget or curl to resume an interrupted download will properly restart from the beginning if the server does not support the Range header.

like image 124
Josh Lee Avatar answered Sep 22 '22 21:09

Josh Lee


RFC2616 section 14.35.2 says:

A server MAY ignore the Range header.

like image 40
Nemo Avatar answered Sep 22 '22 21:09

Nemo