Content-Range
和Range
这两种HTTP头有什么区别?在什么情况下应该使用它们?
我正在尝试从特定字节偏移量流式传输音频文件。我应该使用哪个头部,Content-Range
还是Range
?
Content-Range
和Range
这两种HTTP头有什么区别?在什么情况下应该使用它们?
我正在尝试从特定字节偏移量流式传输音频文件。我应该使用哪个头部,Content-Range
还是Range
?
实际上,被接受的答案并不完整。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的情况,所以也许这些扩展信息对其他人有用。
Range在请求中使用,用于请求特定范围(或多个范围)的字节。 Content-Range在响应中使用,指示服务器正在提供哪些字节(可能与您请求的范围不同),以及整个内容的长度(如果已知)。
Content-Range
标头限制为请求,而是将其绑定到“部分实体正文”。实际上,通常使用该功能来方便上传恢复或分块上传。 - HankContent-Range
可以在请求中使用。请参阅PUT方法部分:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6 - 实体的接收者不得忽略任何它不理解或实现的Content-*头(例如Content-Range),并且必须在这种情况下返回501(未实现)响应。- 请求可能包含Content-Range
头,服务器应该考虑它。 - nietaki