AS3:尝试加载异地swf时沙箱违规

时间:2010-11-17 13:08:03

标签: flash actionscript-3 security sandbox

我正在尝试将放置在Amazon S3(b.com)上的swf加载到不同域(a.com)上的swf中,并且它会抛出此错误

SecurityError: Error #2121: Security sandbox violation: Loader.content:http://www.a.com/loader.swf cannot accesshttp://b.com/loadee.swf. This may be worked around by calling Security.allowDomain.
at flash.display::Loader/get content()

a.com和b.com都在其根目录上有一个看起来像

的crossdomain.xml
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="all"/>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

我正在尝试加载的swf(b.com/loadee.swf)是由软件生成的,所以我无法将Security.allowDomain(“*”)添加到它或类似的东西。

我可以以某种方式加载此swf,还是我使用a.com来托管所有内容?我还希望loader.swf和loadee.swf能够通信(传递变量并进行函数调用) 如果那是可能的。这就是我在loader.swf

中的含义
Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://b.com/crossdomain.xml");
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.checkPolicyFile = true;
loaderContext.allowCodeImport = true;
var loader:Loader = new Loader();
loader.load(new URLRequest("http://b.com/loadee.swf"), loaderContext);

如果有人有任何想法,我真的很感激。

1 个答案:

答案 0 :(得分:0)

如果loadee.swf不是受版权保护的材料,您可以使用flasm为其添加字节码,或者如果您是专家,则可以使用任何HEX编辑器进行操作。

P.S:别忘了,跨域策略在端口843上。