javascript - .htaccess 规则使 sm2 无法在 Android 和 iPad 上加载我网站的 mp3

标签 javascript android .htaccess soundmanager2

我在应用程序的 asset/audio 目录中使用 .htaccess 来防止直接下载 播放的 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 上却无法工作?!有什么建议吗?

最佳答案

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

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

.htaccess HTTP_USER_AGENT not working

虽然这不是一个万无一失的解决方案(据我所知,任何希望绕过此 user_agent 检查的人都可以覆盖 header 信息),但它是一种让播放器正常工作的解决方法...

[从上面的链接复制的解决方案将为这个特定问题生成以下内容]

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`

关于javascript - .htaccess 规则使 sm2 无法在 Android 和 iPad 上加载我网站的 mp3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16660805/

相关文章:

android - 当 Activity 关闭/重新启动时,继续从服务更新 Android UI

regex - 我正在使用正则表达式重定向编辑 .htaccess 文件,如何将 "-"添加到\w 模式?

.htaccess - 除 1 个单页外,在整个网站上强制 HTTPS 重定向

php - 重写搜索选项的 url

javascript - onchange 事件不适用于自动选择的值

javascript - 基于 ngRoute 和 ReSTLike API 创建动态 View

android - NoClassDefFoundError:com.google.zxing.ResultMetadataType for zxing

android - 将 FragmentPagerAdapter 与 ArrayAdapter 一起使用时出现 IllegalStateException

带有基本 jquery ui 插件的 IE6 中的 javascript 内存泄漏

javascript - Eloquent Javascript Ch.6 "Another Cell"构造函数中的部分奇怪行为