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
   401   402   403   404   405   406   407   408   409   410   411