我正在尝试将放置在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);
如果有人有任何想法,我真的很感激。
答案 0 :(得分:0)
如果loadee.swf不是受版权保护的材料,您可以使用flasm为其添加字节码,或者如果您是专家,则可以使用任何HEX编辑器进行操作。
P.S:别忘了,跨域策略在端口843上。