2010-02-25 76 views
2

我有一個flash應用坐在domainA中,需要加載來自Amazon S3存儲桶的swf。 載入時出現以下錯誤。 "Error #2044: Unhandled securityError:. text=從AmazonS3加載swf - 跨域策略

我已經把桶中的一個跨域文件,並推測會做的伎倆。 我怎樣才能解決這個問題?

+0

你有什麼的'跨域。 xml'文件? – 2010-02-25 10:06:53

+0

允許所有域。 cross-domain-policy> Chin 2010-02-25 11:54:17

回答

9

您可以使用存儲區名稱DNS訪問S3。所以,而不是s3.amazon.com/bucketname/filename它是bucketname.s3.amazon.com/filename。使用這種方法,你可以把自己的跨域文件的根路徑

<allow-access-from domain="bucketname.s3.amazonaws.com" /> 

的更好的方法是你的DNS服務器上使用CNAME記錄僞造根爲您的跨域文件。例如

在您的DNS服務器上創建CNAME記錄,將bucketname.yourdomainname.com指向bucketname.s3.amazon。COM

然後把你的跨域文件在水桶根

<allow-access-from domain="bucketname.yourdomainname.com" /> 

,並參考閃文件作爲bucketname.yourdomainname.com/flash.swf等

+0

感謝,與CNAME變化去 - 工作一種享受。 – Chin 2010-03-03 00:06:06

0

你的跨域文件需要使用閃光燈的應用程序,是做服務器上加載,而不是它在加載文件,則指定S3域允許的域

<allow-access-from domain="s3.amazonaws.com" /> 

編輯:。好吧,我正式困惑

看來JB在對他的評論中是正確的,因爲它錯了。從here

每當Flash Player 7中檢測 出的域數據加載請求, 玩家試圖找到它試圖 加載數據的服務器上的策略文件 。如果策略文件存在 ,並且授予訪問製作 請求的Flash影片的原始域名 ,則操作成功。

但是,我們做我們的客戶的網站之一這個確切的事情(將圖像載入從遠程亞馬遜的服務器中的閃存組件),但我們crossdomain.xml文件是在加載Web服務器,亞馬遜的根存儲桶不包含任何策略文件。

那麼我們的網站是如何工作的呢?根據文件,它不應該!

編輯2

按照沃特的評論,我做的是這可以解釋爲什麼我的作品,即使我的跨域文件是放錯了地方的特殊情況......

+1

我很確定你有這個倒退,crossdomain文件需要打開您正在從中加載數據的服務器,並且指定的域是swf文件所在的位置, – jcoder 2010-02-25 09:38:26

+0

謝謝,這是否需要在路徑中。或者我可以將它放在與主應用程序相同的文件夾中? 非常感謝 – Chin 2010-02-25 09:38:57

+0

我想知道它是哪一種? – Chin 2010-02-25 09:40:56

1

加載swf文件與加載數據不完全相同。所以你可能需要的不僅僅是crossdomain.xml。要查看crossdomain.xml文件的位置,我建議使用「嗅探」工具(如httpfox)來查看Flash Player正在查找文件的位置。

要允許來自不同域的swf進行交互,還需要撥打Security.allowDomain。詳細信息請參見the adobe docs on cross-scripting