Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何使用Flash(AS3)从远程域调用Flex SWF?_Apache Flex_Flash_Actionscript 3_Security - Fatal编程技术网

Apache flex 如何使用Flash(AS3)从远程域调用Flex 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

我有一个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);
在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 );