Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I find out whether a server supports the Range header?

I have been trying to stream audio from a particular point by using the Range header values but I always get the song right from the beginning. I am doing this through a program so am not sure whether the problem lies in my code or on the server.

How can I find out whether the server supports the Range header param?

Thanks.

like image 836
lostInTransit Avatar asked Apr 06 '09 06:04

lostInTransit


People also ask

How do I know if my server supports range requests?

Furthermore, you can check Accept-Ranges on the response header to judge whether it can support range, but please notice if the value is none on Accept-Ranges field, it means it can't support range, and if the response header doesn't have Accept-Ranges field you also can't finger out it can't support range from it.

What is accept-ranges header?

The Accept-Ranges HTTP response header is a marker used by the server to advertise its support for partial requests from the client for file downloads. The value of this field indicates the unit that can be used to define a range.

What is range header?

The Range HTTP request header indicates the part of a document that the server should return. Several parts can be requested with one Range header at once, and the server may send back these ranges in a multipart document. If the server sends back ranges, it uses the 206 Partial Content for the response.

Which of the following is a range of header element for heading?

HTML defines six levels of headings. A heading element implies all the font changes, paragraph breaks before and after, and any white space necessary to render the heading. The heading elements are H1, H2, H3, H4, H5, and H6 with H1 being the highest (or most important) level and H6 the least.


2 Answers

The way the HTTP spec defines it, if the server knows how to support the Range header, it will. That in turn, requires it to return a 206 Partial Content response code with a Content-Range header, when it returns content to you. Otherwise, it will simply ignore the Range header in your request, and return a 200 response code.

This might seem silly, but are you sure you're crafting a valid HTTP request header? All too commonly, I forget to specify HTTP/1.1 in the request, or forget to specify the Range specifier, such as "bytes".

Oh, and if all you want to do is check, then just send a HEAD request instead of a GET request. Same headers, same everything, just "HEAD" instead of "GET". If you receive a 206 response, you'll know Range is supported, and otherwise you'll get a 200 response.

like image 141
Shalom Craimer Avatar answered Nov 14 '22 01:11

Shalom Craimer


This is for others searching how to do this. You can use curl:

curl -I http://exampleserver.com/example_video.mp4 

In the header you should see

Accept-Ranges: bytes 

You can go further and test retrieving a range

curl --header "Range: bytes=100-107" -I http://exampleserver.com/example_vide0.mp4 

and in the headers you should see

HTTP/1.1 206 Partial Content 

and

Content-Range: bytes 100-107/10000000 Content-Length: 8 

[instead of 10000000 you'll see the length of the file]

like image 24
user2823974 Avatar answered Nov 14 '22 00:11

user2823974