当我播放HTML5 mp3文件时,为什么Firefox不在HTTP标头中发送Referer?

时间:2012-05-03 14:13:56

标签: html5 firefox browser header http-headers

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

我正在使用jPlayer.org中的播放器来播放mp3文件,而我正在尝试通过从HTTP-sniffer / FireBug /类似程序中读取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文件似乎不起作用,因为暂停/恢复不起作用。

2 个答案:

答案 0 :(得分:0)

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

请参阅Media formats supported by the HTML audio and video elements

答案 1 :(得分:0)

就像蒂姆所说,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类型一样奇怪。如果我们是合乎逻辑的,那么浏览器发出的任何请求都应该附带一个引用URL,无论它是否正在请求它支持的文件..hmm。

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

为了理智,请用oog / wav测试它,并删除你的推荐人检测..只是为了确保它的工作原理:)

那就是说,如果你真的关心水蛭,我不会过多关注推荐人的信息,因为在FF&铬。使用手工制作的http客户端(在大多数语言中只需几行代码),你可以在阳光下欺骗任何东西:cookies,referrer,跨域策略,以及诸如此类的东西。)

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