flex 用socket连接JAVA时 的安全沙箱问题

在JAVA中发送数据到FLEX中,FLEX报错:[SecurityErrorEventtype="securityError"bubbles=falsecancelabl... 在JAVA中发送数据到FLEX中,FLEX报错:
[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]
JAVA中报错:
java.net.SocketException: Software caused connection abort: recv failed

网上搜了一下大概是安全沙箱的问题,不知道怎么解决
展开
 我来答
匿名用户
2013-04-10
展开全部
关于Flex安全沙箱问题的解决最近遇到了Flex安全沙箱问题,找了很多资料发现不是都是和我的程序相关,我的程序需要socket连接,而大多数讲的都是跨域文件读取的。我就把这些方法都总结出来:跨域文件读取方法一:在目标服务器上布署crossdomain.xml文件(我用的此方法很管用,放上就没问题了)需要远程服务根目录定义有crossdomain.xml文件,如下:<?xmlversion="1.0"encoding="UTF-8"?><cross-domain-policy><allow-access-fromdomain="*"/></cross-domain-policy>方法二:使用代理,把Flex要访问的远程文件通过asp,php,jsp等脚本读取到本地,然后再由Flex去访问;方法三:使用Adobeflashplayer9打开程序后,点击菜单栏中文件->创建播放器...即生成exe文件,运行exe文件即可突破安全限制;方法四:1、找到这个文件夹:c:\DocumentsandSettings\<UserName>\ApplicationData\Macromedia\FlashPlayer\#Security2、在其下建立一个名为"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连接请求.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式