我们已经开发了一个量身定制的服务器在.NET托管一些基本的聊天/即时通讯功能,为我们的网站,并在客户端写入的Flex(AS3)使用的是XMLSocket。

现在,我们有2台服务器,一个致力于纯粹的发送策略文件,以及一个处理IM /聊天功能。

但问题是,我们可以看到客户端连接,策略文件被发送,但随后的Flash忽略了政策文件,并要求从我们的聊天/ IM服务器一遍。

策略文件:

<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only"/>
  <allow-access-from domain="*" to-ports="*" secure="false"/>
</cross-domain-policy>

策略服务器:

Server.LogMessage("Policy Server: Serving policy file.");
            TcpListener listener = (TcpListener)ar.AsyncState;
            Socket client = listener.EndAcceptSocket(ar);
            NetworkStream ns = new NetworkStream(client);
            StreamReader sr = new StreamReader(ns);
            StreamWriter sw = new StreamWriter(ns);

            sr.Read();
            //Send policy
            sw.Write(Server.EncodeString(Server.xmlPolicyFile.OuterXml) + "\0");
            sw.Flush();
            ns.Flush();
            //Cleanup
            sw.Close();
            sr.Close();
            ns.Close();
            //Do it again!
            tcl.BeginAcceptSocket(AcceptCallback, tcl);
有帮助吗?

解决方案

跨域策略只适用于服务器及其上的...你不能有一个服务器提供服务了政策在不同的服务器......什么会停止小人创造你的机器的政策,并窃取你的数据。

您需要具有正确的服务器提供服务的政策。

其他提示

感谢Gergor但我的意思是,我们开了一个服务器专门用于发送出的政策文件和一个用于处理实际连接(包括同一台机器上)。

问题是,你需要立即送政策文件,而策略服务器上做其他事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top