2013-05-31 6 views
0

Я хочу получить URLStream из MJPG, но я получил сообщение об ошибке # 2048: Ошибка нарушения безопасности изолированной программы в версии выпуска.Ошибка безопасности песочницы FlexStream Security

То, что я пытаюсь сделать:

Security.allowDomain("*"); 
Security.allowInsecureDomain("*"); 

var stream:URLStream = new URLStream(); 
//receiving this error event in onStreamSecurityError handler: 
//Error #2048: Security sandbox violation: {swf} cannot load data from {url} 
stream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onStreamSecurityError); 
//load method have no loader context option 
stream.load(new URLRequest("http://anydomain.com/mjpg/video.mjpg")); 

Настройка crossdomain.xml не решение вызвать приложение должно иметь возможность загружать поток с любого удаленного сервера.

Как я помню, с классом flash.display.Loader я настроил LoaderContext и домен приложения. После этого приложение flex может загружать ресурсы из любого домена. Но я не знаю, что делать с URLStream.

У вас есть решение проблемы или обход ошибки №2048?

+2

Я думаю, что это весь смысл файла crossdomain - вы не можете просто загрузить с любого сервера. – ethrbunny

+0

Спасибо, но почему я могу просто загрузить с любого сервера с помощью Loader или $ .ajax? Может быть, можно отключить безопасность? Если администратор сервера не хочет делиться ресурсом каждый, он может настроить auth. – 2xMax

+2

То, о чем вы просите, может быть перефразировано как «Как использовать Flash Player для установки Cross Site Scripting Attacks»: http://en.wikipedia.org/wiki/XXS, и ответ заключается в том, что Flash делает все, что он есть чтобы предотвратить это. Если вы хотите загружать данные с любого сервера в флеш-приложении на основе браузера, вам придется создать прокси-серверы, к которым у вас есть доступ. – JeffryHouser

ответ

5

Невозможно. Вы не можете удаленно предоставлять доступ к другому домену, потому что это не ваше разрешение. allowDomain() функция не делает этого, он делает это наоборот:

Позволяет SWF-файлам в указанных доменах обращаться к объектам и переменным в SWF-файл, который содержит вызов allowDomain().

Если ваш SWF находится на домене A.COM, и вы добавляете строку Security.allowDomain("b.com") в нем, чем предоставляет доступ к SWF на домен B.ru к вашему SWF. Он не предоставляет вам доступ к домену b.com.

Вы можете найти более подробную информацию по этому вопросу в the documentation of allowDomain()

AJAX не позволит вам сделать что либо, или лучше сказать, браузер не будет препятствовать вам. Они все играют по тем же правилам.

Чтобы преодолеть это, вы должны проксировать запрос с помощью сценария на стороне сервера, находящегося в том же домене, что и ваш SWF. Это может быть на PHP с завитом, или что бы вы ни находили. This video объясняет, как и почему.

+0

> AJAX не позволит вам сделать это, или лучше, браузер не позволит вам. Они все играют по тем же правилам. Кто останавливает меня называть $ .ajax ('http://extdomain.com')? – 2xMax

+0

В большинстве случаев браузер не позволит этого сделать.Никто не останавливает вас от этого, но браузер просто отказывается выполнять запрос. Попробуй. – evilpenguin

Смежные вопросы