Задать вопрос

Flash: получение доступа к аудиопотоку на чужом домене, без crossdomain.xml?

Всю жизнь считал, что сабж невозможен. Чем надо сказать, отпугнул многих заказчиков, пока меня не ткнули носом в пример: dump.bitcheese.net/files/yhacewe/playtest.swf

Внутри
var s:Sound=new Sound(new URLRequest("http://sanfm.ru:8000/live"));
s.play();


SoundLoaderContext отсутствует, никаких crossdomain.xml нету, а оно играет. Проверял на разных доменах — работает. Вопрос — как это работает? Что за технология, неотличимая от магии?
  • Вопрос задан
  • 3468 просмотров
Подписаться 11 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
FlashManiac
@FlashManiac
I am from Krypton!
Дак просто, это же поток. Первый запрос по идее будет — <policy-file-request/>. На это сервер отвечает этим хмлем, а потом уже идет трансляция потока звука. Так например сокет-сервер работает, возможно тут аналогично.

К тому же не стоит недооценивать crossdomain.xml. Но необходим для безопасности приложения и контента.
Ответ написан
Комментировать
iFrolov
@iFrolov Автор вопроса
Для клиента в данном случае нет разницы, поток там или статичный файл. Если вы намекаете на Socket Policy www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html, то разочарую сразу 3 раза:
1. в коде плеера нигде нет new Socket();
2. можете сами постучаться на порт 843, получите Connection refused
3. сервер трансляции ничего не знает про policy-file-request, говорю точно, а не «возможно», как человек с большим опытом разного стриминга.

Про недооценку ничего не понял, ведь в данном случае его просто нет. Или покажете его?

Что неприятно, то такой же фокус, но с RTMP уже не работает. Вернее, работает на своем же домене, хотя в документации еще интереснее:
In addition, this method cannot be used to extract data from RTMP streams, even when it is called by content that reside in the same domain as the RTMP server.

Все чудесатее и чудесатее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы