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

2024-01-02

我最近在 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 标头时会暴露这些错误?这对我来说似乎不太可能。谁能解释一下吗?

Thanks!


不确定这是一个错误还是只是对标准的歪曲解释 -第14.5节 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html。该标准规定可以但不必须......

OTOH 可能是为了能够使用音频流和/或搜索等,实现的音频播放模块需要这个标头...您可以尝试如果提交“Accept-Ranges:none”会发生什么...如果它们有点符合http 1.1,那么它就可以工作......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐