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()

有什么线索可以帮我解决吗?

4

1 回答 1

1

您链接到的 crossdomain.xml 文件仅允许来自*.dropbox.com. 因此,您必须在 dropbox.com 域上运行您的应用程序才能从基于浏览器的 Flash 应用程序访问文件。

假设您不为 DropBox 工作并且有权在 dropbox.com 域上部署 SWF,这里有几个选项:

理论上,您可以将 SWF 上传到您的 Dropbox 帐户,但我预计性能不会很好;因为保管箱的设计不像网络主机那样响应迅速。

您可以使用本地主机文件做一些工作,以从“dropbox.com”域提供 SWF。这对于生产目的不实用,但可能适用于开发。

您可以将您的应用程序部署为 AIR 应用程序(桌面或移动设备)以避免跨域问题。

您可以使用服务器端代理为您加载图像。您的应用会调用代理服务,代理服务会依次从投递箱加载图像并将图像返回给您的应用。这是最实用的选择。

于 2013-08-02T12:29:55.987 回答