.htaccess规则导致sm2无法在Android和iPad上加载我网站的mp3文件

.htaccess rules make sm2 fail to load mp3s of my website on Android and iPad

本文关键字:加载 iPad 网站 文件 mp3 Android 规则 sm2 htaccess      更新时间:2023-09-26

我在应用程序的assets/audio目录中使用。htaccess,以防止直接下载使用soundmanager2播放的mp3文件。下面是位于assets/audio目录下的。htaccess代码:

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),任何web浏览器都可以使用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?有什么建议吗?

Soundmanager2从Flash退回到iphone, ipad(我假设还有Android)的html5,并且这个html5元素在试图检索需要播放的媒体文件时不提供http_referer标签。因此,.htaccess文件通过抛出一个禁止的响应来拒绝它的请求。

我已经能够找到其他人在Stackoverflow与这个问题(尽管html5内的视频)。解决方案是将user_agent测试添加到.htaccess文件中。我已经测试了线程的解决方案,它也解决了我的Soundmanager2问题。

。HTTP_USER_AGENT不工作

虽然这不是一个失败的安全解决方案(因为我被告知头信息可以被任何想要绕过这个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`