|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Не получается победить securityError
Всем привет.
Уже второй день бьюсь, перечитал что только можно - не получается победить проблему... Есть локальная флэшка main.swf, которая обращается к Instagram - все отлично работает. Проверяю тип безопасности песочницы, которую устанавливает Flash Player Тип безопасности - локальный с установленным доверием. Тут все понятно. Но мне нужно, чтобы эта флэшка лежала на моем сайте - например, https://blablabla.com, и другая флэшка loader.swf, которая теперь лежит локально на компе, ее загружала в себя. (В loader.swf так же прописал Security.allowDomain, так как без этого main.swf загружаться не будет) loader.swf: public class MainLoader extends Sprite { private var loader:Loader; public function MainLoader() { trace(Security.sandboxType); Security.allowDomain("https://blablalba.com"); loader = new Loader(); loader.load(new URLRequest("https://blablabla.com/main.swf")); addChild(loader); } } У loader.swf теперь тип безопасности - localTrusted, а у main.swf - remote. Но вот обращение к Instagram не работает (Console): Цитата:
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Попробуй так
var loader1:URLLoader = new URLLoader(); loader1.addEventListener(Event.COMPLETE, function(event:Event):void{ var loader2:Loader = new Loader(); loader2.loadBytes(loader1.data); }); loader1.dataFormat = URLLoaderDataFormat.BINARY; loader1.load(new URLRequest("https://blablabla.com/main.swf")); Манипуляции с SecurityDomain в sandbox не к чему не приведут, раньше можно было через глобал настройки указать доверенную папку и назначать SecurityDomain.currentDomain. Если ты делаешь AIR/Mobile app то хорошей практикой сначала загрузить все дополнительные модули извне байтами во временную директорию и использовать их уже оттуда
__________________
RocketJump |
|
|||||
Nooob, спасибо! Помогло )
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
Если переведешь приложение на AIR, никаких секьюрити ошибок не будет. Эйр кроссдоменные политики не учитывает
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
caseyryan, не раз посещала мысль попробовать это сделать, но боюсь, что может время отнять - наверняка при переводе на AIR прийдется что-то переделывать...
Перевел, все получилось
__________________
кто не отвечает, того garbage collector забирает Последний раз редактировалось djken; 18.04.2017 в 15:48. |
|
|||||
Потому что это самый разумный вариант в данной ситуации
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Цитата:
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; [SWF(width="800", height="500", frameRate="30")] public class LoaderAir extends Sprite { private var loader:Loader; public function LoaderAir() { loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("https://blablabla.com/main.swf")); } private function loadCompleteHandler(e:Event):void { addChild(loader) } } } Цитата:
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
Создай один контекст для них, и укажи его при загрузке. Тут дело не в кросдоменных политиках уже, а в том, что у main.swf свои ресурсы и своя сцена, а надо, чтобы она была единой
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderCompele); if (Security.sandboxType == Security.REMOTE) { var context:LoaderContext = new LoaderContext(); context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); context.securityDomain = new SecurityDomain(SecurityDomain.currentDomain); loader.load(new URLRequest("https://blablabla.com/main.swf"), context); } else { loader.load(new URLRequest("https://blablabla.com/main.swf")); }
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Для AIR будет Security.sandboxType == Security.APPLICATION и твой код не выполнится.
Но даже если выполнился бы, то: Цитата:
и у SecurityDomain нету такого конструктора
__________________
RocketJump |
Часовой пояс GMT +4, время: 13:53. |
|
« Предыдущая тема | Следующая тема » |
|
|