我在我的应用程序的资产/音频目录中使用.htaccess,以防止直接下载使用soundmanager2播放的mp3文件。以下是.htaccess的代码,它放在assets / audio目录中:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?quran\.2index\.net [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?quran\.2index\.net.*$ [NC]
RewriteRule \.(gif|jpg|mp3)$ - [R=401]
ErrorDocument 401 /e401.html
AddType audio/mpeg mp3
使用桌面(Windows 7),任何网络浏览器都可以使用soundmanager2播放声音。可在以下URL上找到实时演示: http://quran.2index.net/viewAyah/1
问题在于Android网页浏览器,Android上的Opera和iPad的Safari(我刚试过的那些)。这些浏览器无法加载mp3音频文件并弹出下载文件!
对我来说最奇怪的是,当我注释掉上面提到的.htaccess的所有行(除了第一行和最后一行)时,SM2在Android和iPad上运行正常!
我想知道,服务器端.htaccess和客户端Web客户端之间的关系是什么?或者.htaccess中的问题是什么让SM2在Windows7桌面上的任何浏览器都能正常工作,而它在Android网络浏览器和iPad上无效?有什么建议吗?
答案 0 :(得分:2)
Soundmanager2从Flash回到html5 for iphone,ipad(和我假设的Android)这个html5元素在尝试检索需要播放的媒体文件时不提供http_referer标记。因此,.htaccess文件通过抛出禁止响应来拒绝其请求。
我已经能够在Stackoverflow上找到这个问题的其他人(虽然是html5中的视频)。解决方案是将user_agent测试添加到.htaccess文件中。我已经测试了该线程的解决方案,它也解决了我的Soundmanager2问题。
.htaccess HTTP_USER_AGENT not working
虽然它不是一个故障安全解决方案(因为我告诉标题信息可以被任何希望绕过这个user_agent检查的人覆盖),但这是一个可以解决问题的解决方案工作......
[从上面的链接复制的解决方案将为此特定问题产生以下内容]
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !(Android|iPod|iPhone|iPad) [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?quran\.2index\.net [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?quran\.2index\.net.*$ [NC]
RewriteRule \.(gif|jpg|mp3)$ - [R=401]
ErrorDocument 401 /e401.html
AddType audio/mpeg mp3`