当我通过 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 文件似乎不起作用,因为暂停/恢复不起作用。