|
|
|||||
ветеран форума
|
Проблемы с отображением AVM1 в AVM2
Есть 2 домена, на одном (допустим домен А) swf c AS3, на другом (допустим домен Б) swf c AS2.
На домене Б лежит crossdomain.xml Загружаю из Б в А swf, примерно так: var url:String = "http://домен Б/some.swf"; var urlReq:URLRequest = new URLRequest(url); var ldrCntx:LoaderContext = new LoaderContext(); ldrCntx.checkPolicyFile = false; ldrCntx.securityDomain = SecurityDomain.currentDomain; var ldr:Loader = new Loader(); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded); ldr.load(urlReq, ldrCntx); function onLoaded(e:Event):void { addChild(e.target.content); } При тестах локально с таким кодом: var url:String = "http://домен Б/some.swf"; var urlReq:URLRequest = new URLRequest(url); var ldr:Loader = new Loader(); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded); ldr.load(urlReq); function onLoaded(e:Event):void { addChild(e.target.content); } Что я делаю не так, и как заставить корректно работать swf из домена Б в swf c домена А? P.S. Флешки не общаются друг с другом, просто скрипты в загружаемой флешке не работают по отношению к ней же.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
ветеран форума
|
System.security.allowDomain("*"); прописывал, не помогает.
А по подробнее про "грузить в дефолтовый securityDomain" можно? Т.е вместо ldrCntx.securityDomain = SecurityDomain.currentDomain; заменить на ldrCntx.securityDomain = null; так?
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
да я сам не слишком ориентируюсь, сори
как я понял, по умолчанию флешка с другого домена грузится в контексте своего security domain, а с ldrCntx.securityDomain = SecurityDomain.currentDomain; в контексте загружающего, как если бы она было загружена с того же домена.. вот и подумалось, что с allowDomain("*") могло бы сложиться и с дефолтовой загрузкой, походу устранив косяк.., но это только предположение |
|
|||||
ветеран форума
|
Я не знаю дырки это или нет, одно из решений загрузки контента в обход политик безопасности демонстрировал __etc недавно, нечто подобное и у меня есть, но это, так сказать, временные заплатки, которые может и прикроют скоро. Хотелось бы решать проблемы "легальными" и надежными методами.
Решения через серверные скрипты-прокси не в счет.
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 22.05.2009 в 02:13. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
loadBytes что ли?
|
|
|||||
ветеран форума
|
нет не bytes и loadBytes, чуток по другому
private function onLoadData(event:Event):void { var xml:XML = new XML(event.target.data); var loader:Loader = new Loader(); var context:LoaderContext = new LoaderContext(); loader.load( new URLRequest(xml.@url.toString()), context ); loader.contentLoaderInfo.addEventListener(Event.INIT, onButtonLoaded); bannerLink = xml.@link.toString(); } private function onButtonLoaded(event:Event):void { var ldrInfo:LoaderInfo = event.target as LoaderInfo; var unrealContent:DisplayObject; try { // это в случае если нет проблем с security unrealContent = ldrInfo.loader.content; } catch(err:SecurityError) { // Fuck Flash Sequrity var loaderContainer:Sprite = new Sprite(); loaderContainer.addChild(ldrInfo.loader); unrealContent = loaderContainer as DisplayObject; } mcUsualBannerContainer.addChild(unrealContent); mcUsualBannerContainer.mouseChildren = false; mcUsualBannerContainer.mouseEnabled = false; btLink.addEventListener(MouseEvent.CLICK, onClick); }
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Я не понял в чем тут «обход».
|
Часовой пояс GMT +4, время: 22:52. |
|
« Предыдущая тема | Следующая тема » |
|
|