安全沙箱违规无法从box.net加载数据

时间:2012-08-16 06:22:02

标签: actionscript-3 flex google-app-engine flex4.5 box-api

我有一个应用程序可以上传/下载文件到/从box.net上传。该应用程序在未部署在服务器上时工作正常但在我在Google App Engine上部署时会遇到以下错误。

  

错误#2044:未处理的securityError:。 text =错误#2048:安全性   沙箱违规:http://somexyz.appspot.com/xyzsample.swf不能   从http://box.net/api/1.0/download/abcdef/123456加载数据。

我在as3

中包含了以下代码行
Security.allowDomain("*");

并将crossdomain.xml放置在应用根文件夹(Google App Engine)中,并可以使用 somexyz.appspot.com/crossdomain.xml

访问该文件

crossdomain.xml包含以下行

<?xml version="1.0"?> 

<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd"> 

<cross-domain-policy>

   <site-control permitted-cross-domain-policies="all"/>

   <allow-access-from domain="*" to-ports="*"/>

   <allow-http-request-headers-from domain="*" headers="*"/>

   <allow-http-request-headers-from domain="*"/>

</cross-domain-policy>

当我尝试使用tomcat时,我也遇到了同样的问题。

1 个答案:

答案 0 :(得分:5)

如果您从box.net加载,则需要检查http://box.net/crossdomain.xml

在那里你可以阅读以下内容:

<!--
Box has recently changed its crossdomain policy for API calls made from Flash.
To continue using Box API, please add the following line to the code of your Flash
application:
- AS2: System.security.loadPolicyFile("http://www.box.net/api/crossdomain.xml");
- AS3: Security.loadPolicyFile("http://www.box.net/api/crossdomain.xml");
-->

<强>更新

请确保您正在核心添加:

Security.loadPolicyFile("http://www.box.net/api/crossdomain.xml")

加载时:

*.load('http://www.box.net/api/1.0/download/abcdef/123456');

以便服务器的路径相同: http://www.box.net/

对于Flash,http://www.box.net/http://box.net/是2个不同的域名。