【问题标题】:Why is Firefox not sending Referer in HTTP headers when I play HTML5 mp3 files?当我播放 HTML5 mp3 文件时,为什么 Firefox 不在 HTTP 标头中发送 Referer?
【发布时间】:2012-05-13 01:50:40
【问题描述】:

当我通过 HTML5 访问 MP3 文件时,我遇到的问题是 Firefox 没有在 HTTP 标头中发送引用者。

我正在使用来自 jPlayer.org 的播放器来播放 mp3 文件,并且我试图通过读取来自 HTTP-sniffer/FireBug/similar 的 URL 来阻止人们下载歌曲。我的方法是检查我的 .htaccess 文件中的 HTTP 标头:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule ^play/(\S+)$ /uploads/error.mp3
RewriteRule ^play/(\S+)$ /uploads/mp3/$1.mp3

如果 HTTP-referer 未设置为 mydomain.com,则这三行告诉浏览器播放 error.mp3。否则,它会得到真正的 mp3 文件。

这在 Chrome、Internet Explorer 7/8/9、Safari(PC) 和 Opera 中运行良好。但是,在 Firefox(PC 和 Mac)和 Safari (Mac) 中,它不起作用。这似乎是因为根本没有发送 HTTP 引用。当我查看 FireBug 时,我在 Request-headers 中的任何地方都看不到Referer,所以我猜它根本没有发送?当我查看 Web 开发人员工具中的“网络”选项卡时,我可以在 Chrome 中看到它。

还有其他人熟悉这个问题吗?您知道如何阻止 MP3 文件的下载或至少使其更难下载吗?通过 PHP 传递 MP3 文件似乎不起作用,因为暂停/恢复不起作用。

【问题讨论】:

  • 这是哪个 Firefox 版本?根据bugzilla.mozilla.org/show_bug.cgi?id=584480 Firefox 4 及更高版本应该发送一个引用标头。
  • 这是 Firefox 版本 11。
  • 我将 play/ URL 重定向到一个 PHP 文件,并将 $_SERVER 数组通过电子邮件发送给我自己进行检查。我可以确认 Chrome 发送了 HTTP_REFERER 而 Firefox 没有。我猜这个错误还没有完全修复。
  • 你能指出一个显示问题的测试用例吗?我看不出这里没有推荐人怎么可能有请求,除非发生的事情比你说的要多……

标签: html firefox browser header http-headers


【解决方案1】:

我认为 Firefox 不支持 HTML5 音频中的 MP3 格式。也许您也应该尝试使用 ogg 文件编写此代码?

Media formats supported by the HTML audio and video elements

【讨论】:

    【解决方案2】:

    正如 tim 所说,Firefox 不支持 HTML5 中的 MP3 http://caniuse.com/#search=audio 在这种情况下,您应该回退到 oog 或 wav。

    当然你说你使用的是来自 jplayer.org 的播放器,它有 flash 回退,在这种情况下,我们不再真正处理 html5。

    jPlayer 支持的 html5 格式 http://www.jplayer.org/latest/developer-guide/#reference-html5-audio-format

    HTML5 音频格式

    • Firefox(OSX、Win):WEBMA、OGA
    • Safari(OSX、Win):MP3、M4A
    • Mobile Safari iOS4(iPad、iPhone、iPod):MP3、M4A
    • Opera(OSX、Win):WEBMA、OGA
    • Chrome(OSX、Win):WEBMA、OGA、MP3、M4A
    • IE9(Win):MP3、M4A(可以安装WebM编解码器。)

    所以很可能您的标题内容与 FF 不支持 mp3 有关。

    这也可能是一些奇怪的事情,比如服务器上缺少 mime 类型。再一次,如果我们是合乎逻辑的,浏览器发出的任何请求都应该伴随着一个引荐来源网址,无论它是否请求它支持的文件..hmm。

    您可以尝试的一件事是,与其直接链接 mp3,不如给它一个 id,并为此向您的服务器发出请求,然后通过重定向返回一个 mp3。

    为了理智 .. 使用 oog/wav 对其进行测试,并删除您的推荐人检测 .. 只是为了确保它完全有效 :)

    也就是说,如果您真的关心水蛭,我不会对推荐人信息过于重视,因为这在 FF 和 Chrome 中都很容易被欺骗。使用手工制作的 http 客户端(在大多数语言中只需几行代码),您几乎可以欺骗任何东西:cookie、引荐来源网址、跨域策略以及诸如此类的东西 ..不管怎样都离题了 :)

    但是,是的,推荐人信息将保护您免受 95% 的人口的影响。

    【讨论】:

      猜你喜欢
      • 2012-01-29
      • 2013-10-21
      • 2014-07-27
      • 2014-01-15
      • 1970-01-01
      • 2014-01-10
      • 2011-11-13
      • 2013-07-21
      • 1970-01-01
      相关资源
      最近更新 更多