我遇到的问题是,当我通过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文件似乎不起作用,因为暂停/恢复不起作用。
答案 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音频格式
所以很可能你的标题内容与FF不相关,无论如何都支持mp3。
它也可能像在服务器上丢失mime类型一样奇怪。如果我们是合乎逻辑的,那么浏览器发出的任何请求都应该附带一个引用URL,无论它是否正在请求它支持的文件..hmm。
你可以尝试的一件事是,而不是直接链接mp3给它一个id,然后向你的服务器发出请求,然后通过重定向返回一个mp3。
为了理智,请用oog / wav测试它,并删除你的推荐人检测..只是为了确保它的工作原理:)
那就是说,如果你真的关心水蛭,我不会过多关注推荐人的信息,因为在FF&铬。使用手工制作的http客户端(在大多数语言中只需几行代码),你可以在阳光下欺骗任何东西:cookies,referrer,跨域策略,以及诸如此类的东西。)
但是,推荐信息可以保护您免受95%的人口的影响。