如何在客户端请求范围时强制完全HTTP传递?

时间:2014-01-23 16:14:44

标签: http http-headers

假设客户端发出如下请求(从iOS中提取):

GET /test.mp4 HTTP/1.1
Host: example.com:80
Range: bytes=0-1
X-Playback-Session-Id: 3DFA3BE3-CB22-4EC5-808F-B59A735DCECE
Accept-Encoding: identity
Accept: */*
Accept-Language: en-us
Connection: keep-alive
User-Agent: AppleCoreMedia/1.0.0.11B554a (iPad; U; CPU OS 7_0_4 like Mac OS X; en_us)

还有其他此类请求,我相信Chrome可能会通过询问空白范围来测试水域。

服务器如何响应任何此类请求,以便它不需要遵守Range,而是将其视为标准HTTP传递,客户端将播放该文件?

发送常规标头响应和数据,好像客户端没有要求Range一样似乎不起作用。

编辑:相反,如果客户端请求范围,是否可以使用内容长度和内容范围内的完整文件大小的HTTP 206进行响应标题(客户端将忽略)?

2 个答案:

答案 0 :(得分:1)

如果服务器不支持Range标头,它将发送正常的200回复以发送整个文件。如果服务器支持Range标头,它将发送206416回复,具体取决于是否满足请求的范围。这包含在RFC 2616 Section 14.35

如果客户未请求206,则无法回复Range

答案 1 :(得分:0)

尝试使用HTTP 1.0进行响应 - 它根本不支持范围请求。

也许客户会更优雅地对待这样的回复。