我怎么呼叫一个Flex SWF从一个远程域使用闪光灯(AS3)?
-
08-06-2019 - |
题
我有一个Flex swf在托管 http://www.a.com/a.swf.我有个闪码在另一个doamin,试图载的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()
是否有任何方式获得这种代码的工作?
解决方案
这是所有的描述 Adobe Flex3程ActionScript3PDF 在550页(第27章:Flash Player安全/跨脚本):
如果两个SWF写的文件与ActionScript3.0是服从不同的领域,例如, http://siteA.com/swfA.swf 和 http://siteB.com/swfB.swf—那么,默认情况下,Flash Player不允许swfA.swf到脚本swfB.swf,也不swfB.swf到脚本swfA.swf。SWF文件给予许可SWF文件,从其他领域通过调用的安全性。allowDomain().通过调用的安全性。allowDomain("siteA.com"),swfB.swf给SWF文件siteA.com 许可脚本。
它继续在某些更详细的说明,与图表和所有。
其他提示
你需要一个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>
把它当作crossdomain.xml 在根域的你在装载。
还需要设置的加载程序来阅读此文件作为这样的:
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 );
代码样本yoinked从 http://blog.log2e.com/2008/08/15/when-a-cross-domain-policy-file-is-not-enough/
Mayhaps 系统。安全。allowDomain 是你需要什么?
不隶属于 StackOverflow