0 apache-flex google-app-engine actionscript-3 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("*");
Run Code Online (Sandbox Code Playgroud)
并将crossdomain.xml放在app根文件夹(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>
Run Code Online (Sandbox Code Playgroud)
我尝试使用tomcat时也遇到了同样的问题.
如果您从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");
-->
Run Code Online (Sandbox Code Playgroud)
UPDATE
请确保您正在加入它:
Security.loadPolicyFile("http://www.box.net/api/crossdomain.xml")
Run Code Online (Sandbox Code Playgroud)
加载时:
*.load('http://www.box.net/api/1.0/download/abcdef/123456');
Run Code Online (Sandbox Code Playgroud)
这样服务器的路径就是一样的:http://www.box.net/
对于Flash,http://www.box.net/和http://box.net/是2个不同的域名.
| 归档时间: |
|
| 查看次数: |
3962 次 |
| 最近记录: |