GET请求中的“Range”头字段将方法语义修改为只请求转移被选表示数据的一个或多个子范围,而不是整个被选表示数据。
Range = byte-ranges-specifier / other-ranges-specifier
other-ranges-specifier = other-range-unit "=" other-range-set
other-range-set = 1*VCHAR
服务器可能忽略Range头字段。然而,源服务器和中介缓存应该在可能的时候支持字节范围,因为Range支持从大的表示的部分接收和部分失败转移中高效的恢复。服务器必须忽略非GET请求方法中接收到的Range头字段。
源服务器必须忽略包含它无法理解的范围单元的Range头字段。代理可能丢弃包含它无法理解的范围单元的Range头字段。
支持范围请求的服务器可能忽略或拒绝这样的Range头字段,它由多个重叠的范围组成,或由一组未按升序排列的多个小范围组成,因为他们表明了存在一个破损的客户端或故意的拒绝服务攻击(6.1节)。客户端不应该请求本质上处理和转移效率比单个范围低下的包含相同数据的多范围。
请求多范围的客户端应该按升序(他们在一个完整表示中将被一般接收到的顺序)列出那些范围,除非有特殊的需要来提早的请求之后的部分。例如,用户代理处理一个带有各部分的内部目录的大的表示可能需要先请求后面的部分,特别是如果表示是由以反序存储的页面组成并且用户代理希望一次转移一个页面。
Range头字段在评估定义在RFC7232的先决条件头字段之后被评估,并且只有在没有Range头字段时结果是200(OK)的响应。换句话说,当条件GET的结果是304(Not Modified)响应时Range被忽略。
If-Range头字段(3.2节)可以被用作一个应用于Range头字段的先决条件。
如果所有的先决条件都是真,服务器对目标资源支持Range头字段,并且指定的范围时有效且满足的(如2.1节定义),服务器应该发送206(部分内容)响应,其负载体包含一个或多个部分表示,他们对应被请求的满足的范围,如第4节定义。
如果所有的先决条件都是真,服务器对目标资源支持Range头字段,并且指定的范围是无效或不满足的,服务器应该发送416范围(范围不满足)响应。