如何在Python Google App Engine SDK中配置flex crossdomain.xml
我在Python Gae SDK中创建了一个flex应用,但遇到了2048错误。为了解决这个问题,我在静态文件夹下放了一个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="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
然后,我在app.yaml文件中添加了以下内容:
- url: /crossdomain.xml
static_files: static/crossdomain.xml
upload: static/crossdomain.xml
可是,我还是遇到了2048错误。因此,我想知道我是否需要配置什么,或者在我的情况下有没有遗漏的地方,以及如何解决这个错误。
请给点建议。谢谢。
2 个回答
1
FlashPlayer会在网址的根目录下寻找一个叫做 crossdomain.xml
的文件,比如说:
domain.com/crossdomain.xml
这就是FlashPlayer想要找到这个文件的地方。
不过,你可以使用 Security.loadPolicyFile(url)
这个方法,从服务器的其他位置加载 crossdomain.xml
文件。
4
我没有在Flash中使用过crossdomain.xml,但在Unity3d中用过。我已经让它正常工作了,你的设置看起来是对的。
你有没有访问过yoursite.com/crossdomain.xml,看看它在浏览器中是否能正常显示?
如果Flash对这个要求很严格,你可能需要指定一个文件类型(比如text/xml或application/xml)。
- url: /crossdomain.xml
mime_type: text/xml
static_files: static/crossdomain.xml
upload: static/crossdomain.xml
你也可以用一个验证工具检查一下你的crossdomain.xml,确保里面没有漏掉什么,比如/>之类的。
另外,可以看看html5boilerplate的crossdomain.xml。他们的最宽松版本应该可以在任何网站上使用:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
<!-- Most restrictive policy: -->
<!--
<site-control permitted-cross-domain-policies="none"/>
-->
<!-- Least restrictive policy: -->
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
<!--
If you host a crossdomain.xml file with allow-access-from domain=“*”
and don’t understand all of the points described here, you probably
have a nasty security vulnerability. ~ simon willison
-->
</cross-domain-policy>