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

标签 http html audio http-headers audio-streaming

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

工作的 Http 响应 header :

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

失败的 Http 响应 header :

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

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

谢谢!

最佳答案

不确定这是错误还是对标准的歪曲解释 - section 14.5 .标准规定可以而不是必须...

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

关于http - 当 Accept-Ranges 未在 http header 中设置时,浏览器音频播放失败;为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380532/

相关文章:

node.js - 如何在Electron应用程序中查看对主进程发出的HTTP请求的响应?

javascript - 监听 Shadow Dom 的事件

html - 如何使用div绘制曲线?

iPhone:如何独立于音量设置来大声播放本地通知声音?

ios - OpenAL 只适用于 caff 格式的音频文件吗

security - 允许端口 80/TCP 上的传出流量的服务器防火墙是否也允许端口 80/UDP 上的流量?

iOS 网络 - HTTP 连接 & 在后台运行

Java AudioSystem 和 TargetDataLine

node.js - 请求总是返回空错误对象

JavaScript 创建元素然后添加一个事件