这与以下内容有关: How should I implement a COUNT verb in my RESTful web service?,Paging in a Rest Collection 和Using the HTTP Range Header with a range specifier other than bytes?
实际上我认为-1评级的anwser在这里是正确的https://stackoverflow.com/a/1434701/1237617
一般来说,anwsers说你可以使用自定义单位引用sec 3.12
range-unit = bytes-unit | other-range-unit
bytes-unit = "bytes"
other-range-unit = token
但是,当您阅读HTTP规范时,请注意生产规则是:
Content-Range = "Content-Range" ":" content-range-spec
content-range-spec = byte-content-range-spec
byte-content-range-spec = bytes-unit SP
byte-range-resp-spec "/"
( instance-length | "*" )
标题规范仅引用来自sec 3.12的字节单位,而不是范围单位,所以我认为实际上这违反规范在这里使用自定义单位。
我是否遗漏了某些东西或者流行的错误是错误的?
编辑:由于这可能不清楚,我的问题的要点是: rfc2616 sec14.16仅引用bytes-unit。它从未提及范围单位,因此范围单位生产与内容范围无关,因此只能使用字节单位。
我认为这最能解决我的担忧,虽然我需要一些时间来理解它(另外我想确保措辞有问题)。
这反映了一个事实,显然,第一组语法规则专门用于解析,第二组用于产生HTTP请求
感谢elgaton
答案 0 :(得分:2)
如果您阅读HTTP/1.1 RFC, section 3.12,您会看到:
HTTP / 1.1定义的唯一范围单位是“bytes”。 HTTP / 1.1实现可以忽略使用其他单元指定的范围。
因此,引入other-range-unit
令牌只是为了使服务器在接受时更“自由”。这反映了一个事实,显然,第一组语法规则专门用于解析,第二组用于生成HTTP请求,因此服务器甚至可以接受无效请求(它们将被简单地忽略),客户端只会使用普遍接受的bytes
单位。
因此,我个人建议:
bytes
单位,Content-Range
标题)。答案 1 :(得分:2)
经修订的规范允许自定义范围单位。请参阅HTTPbis Part 5, Section 2。
答案 2 :(得分:1)
这纯粹是个人观点,但我认为它与其他HTTP扩展(自定义方法或标题)的使用方式相当一致。以下是我如何阅读它:是的我可以使用自定义范围单位而不是,当它通过防火墙,网络代理和其他中介时被忽略时,我不应该提交错误报告。我在发送它时符合HTTP规范,当它们忽略它时它们符合HTTP。 WebDAV正确使用HTTP扩展,IMO,但由于这个原因很少在Internet上工作。正如我所说,只是个人意见。
答案 3 :(得分:0)
显然可以使用自定义单位,因为:
这反映了显然是第一套语法的事实 规则专门用于解析,第二个用于解析 产生HTTP请求