如何在Python Google App Engine SDK中配置flex crossdomain.xml

2 投票
2 回答
2166 浏览
提问于 2025-04-16 11:48

我在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 文件。

更多信息请查看Adobe的文档

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>

撰写回答