سؤال

لقد قمنا بتطوير خادم مصمم في .NET لاستضافة بعض وظائف الدردشة/IM الأساسية لموقعنا ، ويتم كتابة العميل بـ Flex (AS3) باستخدام XMLSocket.

الآن لدينا خادمان ، أحدهما مخصص لإرسال ملفات السياسة البحتة ، ووظائف 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