2

我有一臺從亞馬遜S3服務器中提取內容的swf one one服務器。我已經建立了,就目前而言,通用的跨域策略以允許所有域的訪問:AS3 LoadPolicyFile函數是否也適用於遠程swfs?

在包含SWF的服務器:

<?xml version="1.0" encoding="utf-8" ?> 
<!DOCTYPE cross-domain-policy SYSTEM 
    "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*" /> 
</cross-domain-policy> 

在S3服務器:

<?xml version="1.0" encoding="utf-8" ?> 
<!DOCTYPE cross-domain-policy SYSTEM 
    "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="master-only" /> 
    <allow-access-from domain="*" /> 
    <allow-http-request-headers-from domain="*" 
    headers="SOAPAction" /> 
</cross-domain-policy> 

這些似乎玩得很好(大部分),因爲我的swf現在正好從S3服務器加載json,xml等文件。什麼是做正確加載從S3服務器的主權財富基金,當它試圖這樣做,它拋出這個異常:

SecurityError: Error #2121: Security sandbox violation: Loader.content: s3.amazonaws.com/bucket_name/swfs/foo.swf cannot access s3.amazonaws.com/bucket_name/data/swfs/bar.swf. This may be worked around by calling Security.allowDomain.

我想這是因爲遠程SWF可能包含惡意可執行代碼。我是否真的需要將allowDomain設置爲某些東西,或者是否有其他更正確的方法來允許我的swf加載其他遠程swfs?

+0

你嘗試調用Security.allowDomain ...?正如錯誤所表明的那樣,這是正確的做法。 – 2012-03-03 11:38:44

回答

0

我在這裏回答了一個類似的問題:

https://stackoverflow.com/a/9547996/579230

另外,如果你crossdomain.xml到位,你可以做loaderContext.checkPolicyFile = true,而不是明確的加載文件。

+0

它們是否被認爲位於不同的域上,因爲主要的swf嵌入在服務器a的頁面中?因爲實際上主要的瑞士法郎和瑞士法郎主要的瑞士法郎試圖加載來自我的S3桶。只是主swf通過swfobject插入到不同服務器的頁面中。 – keybored 2012-03-03 19:43:37

相關問題