使用crossdomain.xml和FileReference.upload进行Flex问题

时间:2009-03-25 01:57:36

标签: flex

问候

我有一个Flex应用程序,它对位于不同域中的Web应用程序执行各种请求。因此,我创建了一个自定义的crossdomain.xml,以允许从我的Flex应用程序访问。 该文件的内容是

> <!DOCTYPE cross-domain-policy SYSTEM
> "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
> <cross-domain-policy>
>     <site-control permitted-cross-domain-policies="all"/>
>     <allow-access-from domain="*" secure="false" to-ports="*"/>
> </cross-domain-policy>

此crossdomain.xml位于我的webapp中的子文件夹中:http://host:port/services/crossdomain.xml 这些服务(有些是http服务,其他是Web服务)都位于服务子文件夹中。

我正在使用Security.loadPolicyFile加载crossdomain.xml,并且Everythings工作正常。直到我尝试使用FileReference对象上传文件。即使我的HTTP表单位于services子文件夹下,并且我正确地加载了crossdomain.xml文件(我可以执行http请求和Web服务请求),每次我尝试进行文件上传时,都会遇到臭名昭着的安全沙箱违规。

我错过了什么?是否有任何允许文件上传的特殊说明?根据Adobe文档(http://livedocs.adobe.com/flex/3/html/help.html?content=05B_Security_10.html),一切都配置得很好。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

Flash Player中的文件上载使用Socket API而不是浏览器网络API。因此,要以这种方式执行操作,您需要拥有socket policy file

更简单的替代方法是通过RemoteObject进行上传。为此,您需要在Flash Player 10中使用新的FileReference API,以便您可以读取客户端文件的字节,然后将它们发送到RemoteObject调用内的服务器。

答案 1 :(得分:0)

我也遇到了与找不到crossdomain.xml 404相同的问题。

我们在项目中将flex与salesforce.com集成在一起,并遇到了crossdomain.xml错误。

在登录身份验证中,我们使用用户名和密码进行本地测试,并且在错误中我们已将服务器URL连接到salesforce.com。

除了chrome之外,它在所有浏览器中都运行良好。然后首先进行更改以检查服务器URL,并在故障功能中包含测试用户名和密码详细信息,它也可以正常使用chrome。未将任何crossdomain.xml文件添加到根目录。

可能与Chrome浏览器初始测试详细信息未被服务器URL错误覆盖。