2013-08-02 167 views
0

我試圖緩存我的Flash項目中的一些圖像,因爲這些圖像可能會頻繁查看。問題是我總是得到一個沙箱違規錯誤。我正在使用Loader實例獲取圖像。我會告訴你我下面的代碼:安全沙箱違規

Security.loadPolicyFile("https://photos-4.dropbox.com/crossdomain.xml"); 
var loaderContext:LoaderContext = new LoaderContext(); 
loaderContext.checkPolicyFile = true; 

var newLdr:Loader = new Loader(); 
newLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, onCloudImageComplete); 
newLdr.load(new URLRequest(this.thumbUrl), loaderContext); 

這裏我粘貼錯誤,我有:

SecurityError: Error #2123: Security sandbox violation: LoaderInfo.content: http://picapoco.local/swf/poUploader_v3.0.swf cannot access https://photos-4.dropbox.com/t/0/AADzWqfBfPvOfff1q0JaIm7Z5EaG8C1MNd-8Z1yCxaoWDg/12/189302658/jpeg/200x200/1/_/0/4/IMGP7780.JPG/yotcoll2bm4le7h/kpHeca7yyu/IMGP7780.JPG. No policy files granted access. 
at flash.display::LoaderInfo/get content() 
at picapoco.models::Picture/onCloudImageComplete() 

任何線索,幫助我解決呢?

回答

1

您鏈接到的crossdomain.xml文件僅允許*.dropbox.com的連接。因此,您必須在dropbox.com域上運行您的應用程序才能訪問基於瀏覽器的Flash應用程序中的文件。

假設您沒有DropBox的工作,並有機會獲得在dropbox.com域部署SWF文件,這裏有幾個選項:

你可以在理論上,將SWF文件上傳到您的Dropbox帳戶,但我不要期待偉大的表現;因爲Dropbox的設計並不像Web主機那樣敏感。

您可以使用本地主機文件進行一些工作,以將SWF從「dropbox.com」域中提供。這對於生產目的不實用,但可能用於開發。

您可以將您的應用程序部署爲AIR應用程序(無論是臺式還是移動式),以避免跨域問題。

您可以使用服務器端代理爲您加載圖像。您的應用程序會調用代理服務,該服務將依次從下拉框加載圖像並將圖像返回到您的應用程序。這是最實際的選擇。

+1

我採用最後一個選項,它適用於我,非常感謝! – Xiaoping