2010-11-17 33 views
1

我試圖將加載到Amazon S3(b.com)上的swf加載到不同域(a.com)上的swf,並且它會拋出此錯誤錯誤AS3:嘗試加載場外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

如果loadee.swf不是版權材料,可以使用flasm添加字節碼,或者如果您是專家,則可以使用任何HEX編輯器進行添加。

PS:不要忘了,跨域策略是在端口843

+0

我只是一個自制loadee.swf測試,直到我說的Security.allowDomain(它扔了同樣的錯誤「*」 )。您可能會認爲Adobe會允許使用第三方應用程序製作的外部swf文件:O – aethys 2010-11-17 13:48:16

+0

當然可以。 SWF是一個開放標準,您可以加載/修改第三方應用程序(如FlashDevelop)製作的SWF。它需要高技能,但它是可能的。 – 2010-11-17 13:52:00