假设客户端发出如下请求(从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进行响应标题(客户端将忽略)?
答案 0 :(得分:1)
如果服务器不支持Range
标头,它将发送正常的200
回复以发送整个文件。如果服务器支持Range
标头,它将发送206
或416
回复,具体取决于是否满足请求的范围。这包含在RFC 2616 Section 14.35。
如果客户未请求206
,则无法回复Range
。
答案 1 :(得分:0)
尝试使用HTTP 1.0进行响应 - 它根本不支持范围请求。
也许客户会更优雅地对待这样的回复。