HTTP Range请求,也称为范围请求,是一种HTTP协议的功能,它允许客户端请求服务器发送一个资源的一部分,而不是整个资源。这种请求通常用于处理大文件的下载或流媒体服务,尤其是在网络不稳定或需要断点续传的场景中非常有用。
范围请求的基本语法如下:
Range: bytes=<start_byte>-<end_byte>
bytes
是指定范围请求的资源类型。<start_byte>
是请求的起始字节位置(包含)。<end_byte>
是请求的结束字节位置(包含)。如果不指定,表示请求从<start_byte>
到资源的末尾。
例如,如果你想要请求一个视频文件的前10秒,假设视频文件的编码是每秒钟1MB,你可以发送以下请求:
Range: bytes=0-1048576
这表示请求从文件的第0个字节到1MB(即1048576字节)的内容。
服务器在接收到范围请求后,如果支持范围请求,会返回状态码206 Partial Content
,而不是通常的200 OK
。响应的Content-Range
头部会指明实际返回的数据范围和资源的总大小。响应体只包含请求范围内的数据。
如果服务器不支持范围请求或请求的范围无效,服务器可能会返回200 OK
状态码,并返回整个资源或错误信息。
范围请求的HTTP方法通常是GET
,但也可以用于其他支持的HTTP方法。
使用范围请求的好处包括:
- 节省带宽:只下载需要的部分,减少不必要的数据传输。
- 提高效率:支持断点续传,提高下载大文件的可靠性。
- 支持流媒体:允许客户端按需加载媒体文件的部分内容,实现流式播放。
范围请求在HTTP/1.1规范中被定义,并被广泛支持于现代的Web服务器和客户端中。