Page 406 - HTTP权威指南
P. 406
一个多部分主体及 Content-Type: multipart/byteranges 首部。
并不是所有服务器都接受范围请求,但很多服务器可以。服务器可以通过在响应中
包含 Accept-Ranges 首部的形式向客户端说明可以接受的范围请求。这个首部的
10
值是计算范围的单位,通常是以字节计算的。 例如:
HTTP/1.1 200 OK
Date: Fri, 05 Nov 1999 22:35:15 GMT
Server: Apache/1.2.4
Accept-Ranges: bytes
...
图 15-9 展示了涉及范围请求的一系列 HTTP 事务的例子。
请求报文
GET /bigfile.html HTTP/1.1
客户端 [...]
响应报文
HTTP/1.1 200 0k
Content-type: text/html www.joes-hardware.com
Content-length: 65537
Accept-ranges: bytes
110001 [...]
111011
010111 范围请求报文
000101
客户端只收 GET /bigfile.html HTTP.1.1
到响应的开头 Range: bytes=20224-
[...]
20 224字节
客户端的原始请求中 范围响应报文
断了,但第2次请求 HTTP/1.1 206 partial
是要求原来的响应报 Content-Range: bytes=20224- www.joes-hardware.com
文中没有收到的部分, Accept-ranges: bytes
这样客户端就能够从 [...]
中断点继续接收报文了。
图 15-9 实体范围请求示例
Range 首部在流行的点对点(Peer-to-Peer,P2P)文件共享客户端软件中得到广泛
应用,它们从不同的对等实体同时下载多媒体文件的不同部分。
注 10: HTTP/1.1 规范中只定义了 bytes 记号,但服务器和客户端的具体实现可以用它们自己认定的单位来
衡量或切分实体。
实体和编码 | 381