У меня есть приложение Rails 3.0.x, которое отображает страницу, содержащую Yahoo Web Player . Проигрыватель воспроизводит аудиофайл, обслуживаемый приложением Rails, контроллер, обрабатывающий запрос файла, использует send_data для отправки mp3-файла:
send_data content, :filename=>dsLabel, :type=>mimeType, :disposition => 'attachment'
(*) Я также попробовал расположить строку
Это прекрасно работает в Safari, IE и FF. Тем не менее, в Opera вы нажимаете кнопку воспроизведения, и звук никогда не воспроизводится, код Yahoo минимизирован, и немного сложно точно сказать, в чем дело, но я пришел к выводу, что это не проблема javascript, насколько я могу судить.
Одна вещь, которую следует отметить в отношении сайта, заключается в том, что, когда я работаю локально в той же сети, наш DNS-сервер разрешает сайт по IP-адресу 10.x.x.x LAN, в противном случае он разрешается по общедоступному IP-адресу.
В Opera, если я открою Настройки и добавлю имя хоста в Trusted Websites->Secure Internal Hosts
, перезагрузите страницу, на которой звук воспроизводится нормально. Если я изменяю свой DNS на OpenDNS, он также играет нормально. Кажется, я сталкиваюсь с проблемой политики безопасности Opera, которую до конца не понимаю.
Мне кажется, что хотя внутренне мой хост преобразуется в IP-адрес локальной сети, после загрузки Opera считает его общедоступным сайтом, и поэтому MP3 не загружается, однако он также преобразуется в IP-адрес локальной сети, поэтому это не кажется как публичное / частное расхождение.
Я надеялся, что кто-то из сообщества Stackoverflow с лучшим пониманием безопасности Opera сможет объяснить политику, которую я здесь вижу.