safari中的mp4因htaccess身份验证而失败

时间:2011-05-30 16:11:17

标签: html5 video safari mp4

在开发网站上,我一直在测试用于html5游戏的mp4文件。即使没有正确的MIME类型声明,本机播放器也能正常加载和播放mp4文件。但是,如果我将AuthType Basic添加到我的.htaccess中,文件失败有时会无法播放,有时会在quicktime播放器中播放。

使用有效用户登录后,为什么此指令会阻止mp4文件正常播放?

6 个答案:

答案 0 :(得分:8)

仍有同样的问题。有些人解决了它,同时将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>

它不是真正的解决方案,因为现在可以访问文件,如果您知道文件的直接链接...对于我的情况仍然可以,但期待一个真正有效的解决方案!

答案 1 :(得分:8)

我怀疑这与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-types。 .htaccess块的第二个规则处理这个,以防万一。

答案 2 :(得分:4)

我基本上接受了@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>

答案 3 :(得分:2)

我发现的唯一工作是在媒体所在的目录中添加Satisfy All指令。但当然,这可能在经过验证的区域之外可用。所以,这不是一个可以接受的解决方案。

答案 4 :(得分:0)

我可以猜到。但如果您使用基本身份验证,首先发生的事情是您的服务器以401 RESULT CODE回答。然后浏览器弹出用户名/密码对话框。 玩家现在可能无法获得正确的内容。尝试使用Firefox和Firefox插件来阅读net-access以进行验证。 也许你可以先通过身份验证来解决它。

答案 5 :(得分:0)

我一直有同样的问题。我不知道为什么会这样,但我找到了一种方法来获取Safari(我使用的是6.0.2版)将视频文件加载到受密码保护的目录(.htaccess身份验证)的子目录中。如果我将登录凭据添加到系统密钥链,它确实有效。我猜测资源请求没有通过适当的身份验证发送。这就是满足任何解决方案的原因:资源不再需要身份验证。