Apache flex 如何使用Flash(AS3)从远程域调用Flex SWF?
我有一个Flex swf托管在。 我在另一个doamin上有一个flash代码,它尝试加载SWF:Apache flex 如何使用Flash(AS3)从远程域调用Flex SWF?,apache-flex,flash,actionscript-3,security,Apache Flex,Flash,Actionscript 3,Security,我有一个Flex swf托管在。 我在另一个doamin上有一个flash代码,它尝试加载SWF: _loader = new Loader(); var req:URLRequest = new URLRequest("http://services.nuconomy.com/n.swf"); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderFinish); _loader.load(req); 在onLoa
_loader = new Loader();
var req:URLRequest = new URLRequest("http://services.nuconomy.com/n.swf");
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderFinish);
_loader.load(req);
在onLoaderFinish事件中,我尝试从远程SWF加载类并创建它们:
_loader.contentLoaderInfo.applicationDomain.getDefinition("someClassName") as Class
当这段代码运行时,我得到以下异常
SecurityError: Error #2119: Security sandbox violation: caller http://localhost.service:1234/flashTest/Main.swf cannot access LoaderInfo.applicationDomain owned by http://www.b.com/b.swf.
at flash.display::LoaderInfo/get applicationDomain()
at NuconomyLoader/onLoaderFinish()
有没有办法让这段代码正常工作?也许这就是你所需要的?第550页(第27章:Flash Player安全性/交叉脚本编写)对此进行了详细说明:
例如,如果使用ActionScript 3.0编写的两个SWF文件来自不同的域,则默认情况下,Flash Player不允许swfA.SWF编写swfB.SWF脚本,也不允许swfB.SWF编写swfA.SWF脚本。SWF文件通过调用Security.allowDomain()为来自其他域的SWF文件授予权限。通过调用Security.allowDomain(“siteA.com”),swfB.swf授予siteA.com的swf文件编写脚本的权限
它将更详细地介绍,包括图表和所有内容。在加载文件的服务器上,您需要一个crossdomain.xml策略文件,它应该看起来像这样:
<?xml version="1.0"?>
<!-- http://www.foo.com/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="www.friendOfFoo.com" />
<allow-access-from domain="*.foo.com" />
<allow-access-from domain="105.216.0.40" />
</cross-domain-policy>
代码示例yoinked自
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.checkPolicyFile = true;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onComplete );
loader.load( new URLRequest( "http://my.domain.com/image.png" ), loaderContext );