2010-09-27 113 views
0

我們已經開發了一個定製的.NET服務器來爲我們的網站託管一些基本的聊天/ IM功能,客戶端使用XMLSocket編寫在Flex(AS3)中。ActionScript 3的策略文件問題XMLSocket

現在我們有2個服務器,一個專門用於純粹發送策略文件,另一個處理IM /聊天功能。

問題是,我們可以看到客戶端連接,策略文件被髮送,但是Flash忽略了策略文件並從我們的聊天/即時消息服務器再次請求它。

政策文件:

<?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); 

回答

0

跨域策略只適用於服務器及其上的...你不能有一個服務器的服務了政策不同的服務器...什麼會阻止惡棍爲您的機器創建策略並竊取您的數據。

您需要從正確的服務器提供策略。

0

感謝Gergor,但我的意思是我們打開了一個專門用於發送策略文件的服務器,以及一個處理實際連接(都在同一臺機器上)的服務器。

問題是您需要立即發送策略文件,而無需在策略服務器上執行任何操作。