Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   почему getDefinition дает ошибку? (http://www.flasher.ru/forum/showthread.php?t=117156)

Oreanor 20.10.2008 17:33

почему getDefinition дает ошибку?
 
общий вопрос - swf1 из одного домена подгружает swf2 из другого домена с целью вытащить класс. но вместо этого вылетает ошибка:
Код:

SecurityError: Error #2119: Security sandbox violation: caller *swf1* cannot access LoaderInfo.applicationDomain owned by *swf2*.
        at flash.display::LoaderInfo/get applicationDomain()
        at loadtest_fla::MainTimeline/onLoadComplete()

если тестировать swf1 в локале, все работает нормально.

если подробнее, вот код swf1

Код:

import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.Security;

Security.loadPolicyFile("http://*домен swf2*/crossdomain.xml");
Security.allowDomain(*домен swf2*);

var loaderContext:LoaderContext = new LoaderContext();
loaderContext.checkPolicyFile = true;
var url:URLRequest = new URLRequest(*путь к swf2*);

var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
l.load(url,loaderContext);

function onLoadComplete(e:Event) {
        classFromSwf2 = e.target.applicationDomain.getDefinition("swf2class") as Class;

}

смущает больше всего то, что совсем недавно проблемы такой как будто не было. Что-то изменилось в политике безопасности? может, теперь нельзя вытащить класс из подгружаемого swf?

etc 20.10.2008 17:58

crossdomain, allowDomain.

Oreanor 20.10.2008 18:12

allowDomain в первой swf-ке у меня прописан, crossdomain тоже есть, забыл скопировать.
тупо до безобразия, но не пашет :(

etc 20.10.2008 18:18

allowDomain должен быть вписан в swf2.
Укажите в LoaderContext текущий ApplicationDomain.

Oreanor 20.10.2008 18:28

добавил в swf1
Код:

loaderContext.applicationDomain=ApplicationDomain.currentDomain;
добавил в swf2
Код:

Security.allowDomain("*");
не помогло


в файле кроссдомена прописано

Код:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" to-ports="*" secure="false"/>
  <site-control permitted-cross-domain-policies="all"/>
</cross-domain-policy>


Alex Lexcuk 20.10.2008 18:34

А в свф которую вы подгружаете ничего добавлять не надо.
Главное на сайте где она расположена должен быть
http://www.dnadillo.dn.ua/crossdomain.xml
Код:

var context:LoaderContext = new LoaderContext();
if (Security.sandboxType!='localTrusted') context.securityDomain = SecurityDomain.currentDomain;
trace(Security.sandboxType);
context.applicationDomain = ApplicationDomain.currentDomain;

var ldr:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("http://www.dnadillo.dn.ua/fla/cat.swf");
ldr.load(urlReq,context);
//ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
addChild(ldr);

Хвост дергается программно
http://murmadillo.tut.su/fla/One_cat.swf

http://www.dnadillo.dn.ua/fla/Crossdomain.html

Oreanor 20.10.2008 18:47

Alex Lexcuk, OMG, это оно!!!
вот этой чертовой строчки не хватало:
Код:

context.securityDomain = SecurityDomain.currentDomain;
спасибо огромное всем!


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

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