Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   crossdomain: расставим точки над i (http://www.flasher.ru/forum/showthread.php?t=159940)

flashfoxter 07.07.2011 01:27

crossdomain: расставим точки над i
 
Добрый день.
Промучавшись два дня, с нарушениями песочницы, решил вопрос по другому, но теперь хотел вернуться к этому вопросу и понять в чем соль.
Я перерыл всю кирупу и весь флэшер, ничего не помогло решить вопрос.
Решил разбираться фундаментально.

В общем ситуация такова, есть swf1 который загружен на сервер и swf2 который находится на другом сервере, который загружается в swf1.

В идеале конечно было бы получить готовый код, для запуска swf как локально так и с сервера, загрузки в себя swf2 , получения классов swf2, но так как таких добрых людей наверное нет(goodGuy камень в ваш огород :)), начну издалека(упрощаем задачу) :

Информация с сайта Adobe:

Вот пример проверки наличия файла политики при загрузке SWF-файла из другого домена в целях размещения файла в той же изолированной программной среде, что и объект Loader. Кроме того, этот код добавляет классы в загруженном SWF-файле в тот же домен приложения, что и у объекта Loader:

Код AS3:

var context:LoaderContext = new LoaderContext(); 
context.securityDomain = SecurityDomain.currentDomain;
context.applicationDomain = ApplicationDomain.currentDomain;
var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/library.swf");
var ldr:Loader = new Loader();
ldr.load(urlReq, context);

Результат: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048: Security sandbox violation ....

Кто-нибудь поможет ?


Итак на данный момент Благодаря этому блогу:
http://www.bigspaceship.com/blog/lab...-errors-oh-my/

Имеем понимание как определить, откуда запущена флэшка:

Код AS3:

var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoadComplete_handler);
if(Security.sandboxType == Security.REMOTE){
        var context:LoaderContext = new LoaderContext();
        context.securityDomain = SecurityDomain.currentDomain;
        l.load(new URLRequest('http://domain.com/extFile.swf'), context);
}else{
        l.load(new URLRequest('extFile.swf'));
}






Добавлено через 37 минут

in4core 07.07.2011 04:21

все же не понятно , где разговор про кроссдомаин хмл ? Его видимо нету вот и ошибка. Надо его вставить и затем...
Код AS3:

Security.loadPolicyFile('cross.xml')


flashfoxter 07.07.2011 04:29

Таки он есть :) И я перепробовал все и вся :) Тот вариант кода что приведен, как я уже говорил для простоты решения по шагам.
И crossdomain я грузил... Хотя в документации сказано, что если он есть он его итак подхватит...

Я и не обещал разговоров про crossdomain.xml, я предлагал решить вопрос с кроссдоменными запросами, что бы он уже не возникал(потому, что таких тем или подобных на этом форуме очень много)


Ну в общем-то вызывает нарушение песочницы только при запуске с сервера, при запуске локально просто не забирает классы из swf. Пробовал так:
var bTestClass:Class = ApplicationDomain.currentDomain.getDefinition("BaloonSmall") as Class;
var b:MovieClip = new bTestClass();
addChild(b);

kackbip 07.07.2011 07:37

Кроссдоменника либо нет либо он лежит не в корне. Если он лежит не в корне то нужно воспользоваться кодом из сообщения in4core.
Также надо понимать, что www.domain и domain - разные домены и их надо правильно прописать в кроссдоменнике

АПД: понятно, что вы каких-то самых базовых основ не понимаете, а потому поясню - кроссдоменник нужен на сервере ОТКУДА скачивается контент.
т.е.
Цитата:

есть swf1 который загружен на сервер и swf2 который находится на другом сервере
кроссдоменник надо положить на сервер, где лежит swf2


Часовой пояс GMT +4, время: 19:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.