safari 中的 mp4 因 htaccess 身份验证而失败
Posted
技术标签:
【中文标题】safari 中的 mp4 因 htaccess 身份验证而失败【英文标题】:mp4 in safari fails with htaccess authentication 【发布时间】:2011-09-04 22:19:54 【问题描述】:在一个开发网站上,我一直在测试 mp4 文件,以便在 safari 中播放 html5。本机播放器可以很好地加载和播放 mp4 文件,即使没有正确的 MIME 类型声明。但是,如果我将 AuthType Basic 添加到我的 .htaccess 文件中,文件有时会无法播放,有时会在 quicktime 播放器中播放。
使用有效用户登录后,为什么该指令会阻止 mp4 文件正确播放?
【问题讨论】:
【参考方案1】:仍然有同样的问题。有些人解决了这个问题,同时将 mime 类型添加到他们的 .htaccess 文件中(对我不起作用):
AddType video/ogg .ogv
AddType video/mp4 .mp4
AddType video/mp4 .mov
AddType video/webm .webm
目前我在 htaccess 中使用您已经提到的“全部添加”(参见下面的代码):
<FilesMatch mp4>
Satisfy any
order allow,deny
allow from all
</FilesMatch>
这不是一个真正的解决方案,因为文件现在可以访问,如果您知道文件的直接链接...对于我的情况来说仍然可以,但期待一个真正可行的解决方案!
【讨论】:
仔细阅读:“..这不是真正的解决方案,因为文件现在可以访问,如果您知道文件的直接链接..” 没错,我说过,这不是保存! 所以我们称它为多余的注释并保持这样;) 等等...我知道这是一个旧线程,但它从各地链接到。接受的答案真的只是删除身份验证吗? 否,此解决方案“启用”在“.htaccess”文件夹中播放视频。缺点是,如果您知道直接链接,则可以在没有 htaccess 密码的情况下播放视频文件。这就是为什么我写“不是真正的解决方案......”,但对于我来说,这种副作用是好的【参考方案2】:我怀疑这与 Safari 沙盒媒体播放的方式有关。页面似乎经过身份验证,但视频文件被视为一个完全独立的请求,需要自己的登录。第二个身份验证请求在某些配置上失败,传输挂起等待凭据。
我发现的唯一不太理想的解决方案是专门免除 mp4 文件的身份验证。将以下内容添加到站点的 .htaccess 文件中,无需登录即可播放 mp4 文件。
请记住,如果有人知道视频文件的确切路径,他们将能够在不登录的情况下查看这些文件。
# Exempt movies from password protection to prevent extra login prompts
<Files ~ "\.(mp4|m4v)">
AddType video/mp4 mp4
order allow,deny
allow from all
satisfy any
</Files>
注意:波浪号告诉 Apache 在文件名的末尾进行匹配,而不是在主目录中。
我能够使用 Safari 6.02 在 Lion (10.7.5) 上重新创建此行为。带有 Safari 6.02 的 Mountain Lion (10.8.2) 提供了第二个身份验证窗口并正确播放了视频。
我怀疑的唯一另一件事是需要为 mp4 播放显式设置服务器 mime 类型。 .htaccess 块的第二条规则负责这一点,以防万一。
【讨论】:
谢谢,这对我有用,但它不应该有一个结束双引号吗?比如<Files ~ "\.(mp4|m4v)">
? .. 甚至<Files ~ "\.(mp4|m4v)$">
?
是的,我爱上了一个 18 个月大的错字【参考方案3】:
我基本上采用了@longilong 和@joemailer 的建议,并在.htaccess 中为我们的目的制作了一个更完整的:
AddType video/ogg .ogv
AddType video/mp4 .mp4
AddType video/mp4 .mov
AddType video/x-m4v .m4v
AddType video/webm .webm
# Exempt movies from password protection to prevent extra login prompts
<Files ~ "\.(ogv|mp4|mov|m4v|webm)$">
order allow,deny
allow from all
satisfy any
</Files>
【讨论】:
【参考方案4】:我发现的唯一解决方法是在媒体所在的目录中添加满足所有指令。但当然,这可能在经过身份验证的区域之外可用。所以,这不是一个可接受的解决方案。
【讨论】:
【参考方案5】:我只能猜测。但是如果您使用基本身份验证,首先发生的事情是您的服务器使用 401 RESULT CODE 回答。然后浏览器弹出用户名/密码对话框。 播放器现在可能无法获得正确的内容。尝试使用 Firefox 和 Firefox 插件解决此问题,以读取网络访问权限以进行验证。 也许您可以先通过身份验证来解决它。
【讨论】:
【参考方案6】:我也遇到了同样的问题。我不确定为什么会这样,但我找到了一种方法让 Safari(我使用的是 6.0.2 版)将视频文件加载到受密码保护的目录(.htaccess 身份验证)的子目录中。如果我将登录凭据添加到系统钥匙串中,它确实有效。我猜对资源的请求没有通过正确的身份验证发送。这就是满足任何解决方案有效的原因:资源不再需要身份验证。
【讨论】:
以上是关于safari 中的 mp4 因 htaccess 身份验证而失败的主要内容,如果未能解决你的问题,请参考以下文章
safari 不会播放转换为 mp4 或 m4v 的 gif