c# 与flash 的socket跨域通信问题,现在通信没有问题,但是当把swf放到html里面时就会提示安全问题,大侠们,帮忙解决一下吧

解决方案 »

  1.   

    添加 站点信任。
    IE的option的安全选项卡
    添加信任站点  试试
      

  2.   

    好像flash跨域需要一个策略文件,需要验证843端口,但是却不知道怎么写,有没有c#服务端的代码,那样最好了啊
      

  3.   

    c#返回一个安全策略给flash就行!
    <cross-domain-policy>
    <allow-access-from domain="*" to-ports="*" />
    </cross-domain-policy>
      

  4.   

    这个文件我已经返回了,并且flash已经收到,但是验证的socket还是连不上呢,在说的细一点好吗?具体注意的细节
      

  5.   

    Flash Player在你的socket.connect(”domain”,port)运行之前,会向你的socket服务器的843端口(据说Adobe已经向相关管理机构申请保留843端口给Flash Player用)发送一个字符串 “<policy-file-request/>”,这个时候如果你有一个服务在监听843端口那么收到这个字符串之后,直接按照XML格式发回策略文件就解决了。(注意发回的时候记得加一个截止字符”\0″)当然你也可以不用843端口自己设置一个端口。因为Flash Player如果在843端口得不到信息,就会检查你是否在你的Flash文件里面自己添加了指定的获取通道,你可以定义一个自己的端口。不过这个时候你不能用http方式,而要用xmlsocket方式。(相当于自动帮你新建了一个xmlsocket对象,然后链接你指定的主机和端口)。比如你想用 1234端口可以在你的Flash里面加这一句 Security.loadPolicyFile(“xmlsocket://www.xxx.com:1234”),需要注意的是这一句要加在你的 socket.connect前面。还有最后一个办法,就是在你的socket连接端口监听这个请求。比如你用的是 socket.connect(”192.168.1.100″,8888),那么在你的服务器加一段接收字符串”<policy-file- request/>”的代码,当接到这个字符串时将策略文家按照xml格式发到客户端。
    <cross-domain-policy> 
    <allow-access-from domain="*" to-ports="*" /> 
    </cross-domain-policy>