HTTP标头Content-Range和Range有什么区别?什么时候应该使用?
我正在尝试从特定的字节偏移量流式传输音频文件。我应该使用Content-Range还是Range标头?
谢谢
HTTP标头Content-Range和Range有什么区别?什么时候应该使用?
我正在尝试从特定的字节偏移量流式传输音频文件。我应该使用Content-Range还是Range标头?
谢谢
Answers:
在请求中使用范围,以请求特定范围的字节。响应中使用Content-Range来指示服务器为您提供的字节(可能与您请求的范围不同),以及整个内容的长度(如果知道)。
实际上,接受的答案并不完整。内容范围不仅用于响应。提供实体的请求也是合法的。
例如,HTTP PUT提供了一个实体主体,它可能仅提供了实体的一部分。因此,PUT请求可以包括Content-Range标头,该标头向服务器指示应将部分实体主体合并到实体中的位置。
例如,让我们首先使用HTTP创建然后附加到文件:
要求1:
PUT /file HTTP/1.1
Host: server
Content-Length: 1
a
要求2:
PUT /file HTTP/1.1
Host: server
Content-Range: bytes 1-2/*
Content-Length: 1
a
怎么样,让我们看看文件的内容...
要求3:
GET /file HTTP/1.1
Host: server
HTTP/1.1 200 OK
Content-Length: 2
aa
这允许通过HTTP进行读取和写入的随机文件访问。我只是想澄清一下,因为我正在研究我正在开发的WebDAV客户端中Content-Range的使用,所以也许这些扩展的信息将对其他人有用。
Content-Range
标头限制为请求,而是将其绑定到“部分实体-主体”。实际上,使用该功能促进上传恢复或分块上传非常普遍。
Content-Range
可以在请求中使用。参见PUT方法的部分:w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6 - The recipient of the entity MUST NOT ignore any Content-* (e.g. Content-Range) headers that it does not understand or implement and MUST return a 501 (Not Implemented) response in such cases.
-请求可能包含的Content-Range
头和服务器应该考虑到这一点。