【问题标题】:mp4 in safari fails with htaccess authenticationsafari 中的 mp4 因 htaccess 身份验证而失败
【发布时间】:2011-09-04 22:19:54
【问题描述】:

在一个开发网站上,我一直在测试 mp4 文件,以便在 safari 中播放 html5。本机播放器可以很好地加载和播放 mp4 文件,即使没有正确的 MIME 类型声明。但是,如果我将 AuthType Basic 添加到我的 .htaccess 文件中,文件有时会无法播放,有时会在 quicktime 播放器中播放。

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

【问题讨论】:

    标签: html video safari 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 块的第二条规则负责这一点,以防万一。

    【讨论】:

    • 谢谢,这对我有用,但它不应该有一个结束双引号吗?比如&lt;Files ~ "\.(mp4|m4v)"&gt;? .. 甚至&lt;Files ~ "\.(mp4|m4v)$"&gt; ?
    • 是的,我爱上了一个 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 身份验证)的子目录中。如果我将登录凭据添加到系统钥匙串中,它确实有效。我猜对资源的请求没有通过正确的身份验证发送。这就是满足任何解决方案有效的原因:资源不再需要身份验证。

          【讨论】:

            猜你喜欢
            • 2020-10-30
            • 1970-01-01
            • 2020-03-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-06-04
            • 1970-01-01
            • 2019-07-18
            相关资源
            最近更新 更多