Flash AS3:尝试加载非现场swf时发生沙箱冲突

Flash AS3:尝试加载非现场swf时发生沙箱冲突,flash,actionscript-3,security,sandbox,Flash,Actionscript 3,Security,Sandbox,我试图将AmazonS3B.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.

我试图将AmazonS3B.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>

如果有人有任何想法,我将非常感谢。

如果loadee.swf不是受版权保护的材料,您可以使用flasm向其添加字节码,或者如果您是专家,您可以使用任何十六进制编辑器


注意:别忘了,跨域策略在端口843上。

我刚刚用自制的loadee.swf进行了测试,它抛出了相同的错误,直到我添加了Security.allowDomain*。您可能认为Adobe会允许加载使用第三方应用程序制作的外部swf:当然是OYes。SWF是一个开放标准,您可以加载/修改由第三方应用程序(例如FlashDevelop)生成的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);