问候
我有一个 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 位于我的 web 应用程序的子文件夹中:http://host:port/services/crossdomain.xml 这些服务(有些是 http 服务,有些是 Web 服务)都位于 services 子文件夹内。
我正在使用 Security.loadPolicyFile 加载 crossdomain.xml ,一切正常。直到我尝试使用 FileReference 对象上传文件。即使我的 HTTP 表单位于 services 子文件夹下,并且我正确加载了 crossdomain.xml 文件(我可以执行 http 请求和 Web 服务请求),每次我尝试上传文件时,我都会遇到臭名昭著的安全沙箱违规。
我错过了什么吗?是否有任何允许文件上传的特殊说明?根据 Adobe 文档 ( http://livedocs.adobe.com/flex/3/html/help.html?content=05B_Security_10.html ),一切都配置良好。有什么想法吗?
最佳答案
Flash Player 中的文件上传使用 Socket API,而不是浏览器网络 API。因此,要以这种方式进行操作,您需要有一个 socket policy file .
更简单的替代方法是通过 RemoteObject 进行上传。为此,您需要使用 Flash Player 10 中的新 FileReference API,以便您可以读取客户端文件的字节,然后在 RemoteObject 调用中将它们发送到服务器。
关于apache-flex - Flex 与 crossdomain.xml 和 FileReference.upload 相关的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/679952/