cloudflare 代理后面的 apache 不提供状态代码 206 的 mp4 文件

问题描述 投票:0回答:1

mp4 视频文件托管在 Cloudflare 代理后面的 Capnel 的 apache 服务器上。该文件可以在非苹果设备浏览器上加载,但不能在苹果的 safari 和其他浏览器上加载。

未加载文件的原因是 Safari 发送带有请求的范围标头,而 apache 结果请求的状态代码为 200,而不是 206。

托管 iOS 媒体文件的 HTTP 服务器必须支持字节范围请求,iOS 使用该请求在媒体播放中执行随机访问。 (字节范围支持也称为内容范围或部分范围支持。)大多数(但不是全部)HTTP 1.1 服务器已经支持字节范围请求。

如果您不确定您的媒体服务器是否支持字节范围请求,您可以打开终端应用程序并使用curl命令行工具从服务器上的文件下载一小段:

示例命令: 卷曲-I --范围 0-99 http://example.com/test.mp4

如果 web 服务器是 cloudflare 代理后面的 litespeed 或 openlitespeed,则会加载相同的文件。

如果我关闭 cloudflare 代理,视频将在 apache 以及 litespeed/openlitespeed 上完美加载,状态代码为 206。

我做了以下事情,但没有使用 apache 和 litespeed:

  • 在 apache 中禁用 mod_deflate
  • 绕过 mp4 文件的缓存

如果您有解决方案,请帮忙。

谢谢 拉克斯曼

apache cloudflare litespeed openlitespeed
1个回答
0
投票

通过在 htaccess 下面添加来解决问题

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(mp4|ogv|webm)$ no-gzip dont-vary
© www.soinside.com 2019 - 2024. All rights reserved.