如何阻止 X-Sendfile 在 IE9 发出请求时提供完整的视频文件


How can I stop X-Sendfile from serving the full video file when IE9 makes the request?

我遇到了一个问题,无论预加载属性设置如何,当IE9发出视频请求,并且视频由x-sendfile提供时,请求被列为挂起并保持连接打开。

因此,如果您有 10 个视频尝试加载,IE9 将很快耗尽其所有可用连接,浏览器将无法发出进一步的请求。

当告诉IE9从Apache请求相同的视频时,如果没有X-Sendfile,Apache会将文件的一小部分作为200请求。然后,当按下播放按钮以提供一系列文件时,浏览器会发出请求。

看起来X-Sendfile导致Apache最初提供整个文件,而不仅仅是提供其中的一部分。

如何通过 Apache 函数使 X-Sendfile 请求与向 Apache 发出常规请求相同?

header("Accept-Ranges: bytes");一样设置"接受范围"标头,告诉IE9默认尝试流式传输文件,而不是在一个块中提供文件。

建议在设置之前检查 HTTP 请求是否为 1.1 版,因为 1.0 不支持标头。

if (isset($_SERVER['SERVER_PROTOCOL']) && $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.1') {
    header("Accept-Ranges: bytes");
}

无法在任何地方找到有关此的任何文档,因此我在此处发布我的解决方案。