【发布时间】:2016-03-10 22:47:30
【问题描述】:
如果我请求某个范围和未知的大小,Content-Range 看起来如何。
例如,我的请求是“bytes=100-200”,流将在 150 处结束。但在开始流之前我不知道。我应该将什么作为 Content-Range 标头发送?
bytes 100-/*
bytes 100-200/*
bytes 100-*/*
或者根本就不是法律情况?
如果请求是开放式的,同样的问题:“bytes=100-”
【问题讨论】:
如果我请求某个范围和未知的大小,Content-Range 看起来如何。
例如,我的请求是“bytes=100-200”,流将在 150 处结束。但在开始流之前我不知道。我应该将什么作为 Content-Range 标头发送?
bytes 100-/*
bytes 100-200/*
bytes 100-*/*
或者根本就不是法律情况?
如果请求是开放式的,同样的问题:“bytes=100-”
【问题讨论】:
如果您请求一个可满足的范围,服务器应该以 206(部分内容)响应进行响应。见RFC7233, sec. 4.1。
如果请求资源的字节长度小于范围间隔的偏移量,或者关闭偏移量超出资源长度,服务器应该响应 416(范围不满足)。见section 4.4。
要跳过内容的前 100 个字节,您确实是正确的,请求应该包含 Range: bytes=100- 标头。请参阅sec. 2.1 和sec. 3.1。
就这种情况而言,资源的长度未知,并且正在以产生不可预测大小的内容块的方式读取:这是任何 RFC 都不认可的未定义行为。 Content-Range 标头以当前范围或总内容大小未知的方式指定,但不能同时未知。您不能使用 HTTP 信封来指定范围长度,因为服务器必须在响应 206 代码时提供 Content-Range 标头(参见 sec 4.1)。
正确的处理方式是:
【讨论】: