flex Error#2048跨域问题的解决方法

来源:互联网 发布:windows欢迎界面后黑屏 编辑:程序博客网 时间:2024/06/04 00:49

        今天用flex写一个下载功能时发现,在flex调试可以下载文件,但是把生成的html文件部署到tomcat上面却下载不成功,出现2048错误。找了很多资料,解决方法有挺多。

        我是用以下方法解决的。

        在目标服务器上布署crossdomain.xml文件。如下:

<span style="font-size:18px;"><?xml version="1.0"?><!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="*" />     <allow-http-request-headers-from domain="*" headers="*"/> </cross-domain-policy></span>

        这样子问题就解决了。下面还有其他的方法可以解决。

方法一:

        使用代理,把Flex要访问的远程文件通过asp,php,jsp等脚本读取到本地,然后再由Flex去访问;

方法二:

        使用Adobeflashplayer9打开程序后,点击菜单栏中文件->创建播放器...即生成exe文件,运行exe文件即可突破安全限制;

方法三:

        1、找到这个文件夹:c:\DocumentsandSettings\<UserName>\ApplicationData\Macromedia\FlashPlayer\#Security

        2、在其下建立一个名为"FlashPlayerTrust"的文件夹

        3、在"FlashPlayerTrust"文件夹下新建一TXT文件,内容如下:c:\d:\e:\f:\

        4、将该txt文件命名为:"myTrustFiles.cfg"再打开你硬盘里的SWF文件,就不会出现那个烦人的安全设置提示窗口了!

方法四:

        用HttpService它默认是有Proxy的,需要配置flex-config.xml,里面有一段:<http-service-proxy><whitelist>………………</whitelist></http-service-proxy>
这个是白名单,一般情况下是注释掉的,也就是默认只有本地的http://{localserver}/*和https://{localserver}/*可以访问。其他的需要在flex-config.xml里的自行修改成需要的。

        访问本地自然不会跨域,不过你肯定访问局域网其他机器了,所以是依照白名单规则,属于跨域。
Socket沙箱问题
        在Flex安全沙箱中使用Socket进行通信时,也会受到Flash9的新安全策略的困扰。解决方法不能像在Web服务器中布置一个crossdomain.xml来解决,或是在服务器上专门
开启843端口来提供安全策略。有一种方法就是在接收到客户端的连接后,向其发送安全策略。

        比如我是用JAVA来开发,客户端的Flex会先搜索同域,及服务器的843口,看是否能得到安全策略,这时候Socket是先建立好的,可以在接收到Socket,即Accept事件发生是马上向其发送策略串,否则客户端就会因为安全策略不过关而断开,如果成功获取策略,则客户端将断掉先前的那次Socket,再真正进行程序中你要求的Socket连接请求。

0 0