当未在http标头中设置Accept-Ranges时,浏览器音频播放失败;为什么?

时间:2011-09-11 18:57:37

标签: http html5 audio http-headers audio-streaming

在firefox或chrome中打开音频文件时,我最近发现了一些令我惊讶的东西。如果我没有指定HTTP响应头“Accept-Ranges:bytes”,则firefox将无法在播放结束前确定ogg文件的长度(以秒为单位)。 Chrome会发现ogg文件的长度(以秒为单位),但音频播放器在到达结尾时似乎会崩溃,并且在崩溃后拒绝重新播放该文件。其他浏览器未经过测试。

使用Http响应标头:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: application/ogg
Content-Length: 245646

Http响应标头失败:

HTTP/1.1 200 OK
Content-Type: application/ogg
Content-Length: 245646

这对我来说很奇怪,因为我没有使用任何部分内容范围。我的服务器实现甚至不支持它们(所以我认为我的服务器可能在说“Accept-Ranges:bytes”时撒谎)。我当然不明白为什么在浏览器中播放时需要这个标题。两个浏览器是否都有错误,当我没有设置Accept-Ranges标头时会暴露这些错误?这对我来说似乎不太可能。谁能解释一下?

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定这是一个错误还是只是对标准的错误解释 - section 14.5。标准陈述可能而不是...... ......

OTOH可以是因为能够使用音频流和/或寻求等等。实现的音频播放模块需要这个标题...你可以试试如果提交“Accept-Ranges:none”会发生什么......如果他们有点符合http 1.1而不是它的工作......