Правила .htaccess не позволяют sm2 загружать mp3 моего сайта на Android и iPad

Я использую .htaccess в каталоге assets/audio моего приложения, чтобы предотвратить прямую загрузку mp3-файлов, воспроизводимых с помощью звуковой менеджер2. Ниже приведен код файла .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 и Safari на iPad (только те, с которыми я тестировал). Эти браузеры не могут загрузить аудиофайл mp3, и файл загрузки появляется!

Самое странное для меня, когда я закомментировал все строки .htaccess, рассмотренные выше (кроме первой и последней строк), SM2 стал нормально работать на Android и iPad!

Интересно, какая связь между .htaccess на стороне сервера и веб-клиентом на стороне клиента? Или в чем проблема с .htaccess, из-за которой SM2 отлично работает с любым браузером на рабочем столе Windows7, но не работает в веб-браузере Android и iPad?! Есть предложения?


person SaidbakR    schedule 21.05.2013    source источник


Ответы (1)


Soundmanager2 возвращается от Flash к html5 для iphone, ipad (и Android, я полагаю), и этот элемент html5 не предоставляет тег http_referer, когда он пытается получить медиафайл, который ему нужно воспроизвести. Поэтому файл .htaccess отклоняет запрос, выдавая запрещенный ответ.

Я смог найти кого-то еще на Stackoverflow с этой проблемой (хотя и видео в html5). Решение состоит в том, чтобы добавить тест user_agent в файл .htaccess. Я протестировал решение этой темы, и оно также решает мою проблему с Soundmanager2.

.htaccess 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`
person user2409866    schedule 22.05.2013
comment
Итак, как я могу добавить рассматриваемую модификацию в вышеупомянутый .htaccess? - person SaidbakR; 23.05.2013
comment
Вам просто нужно добавить одну строку «RewriteCond %{HTTP_USER_AGENT} !(Android|iPod|iPhone|iPad) [NC]» (отредактированное решение с примером) - person user2409866; 23.05.2013