Проблема с файлом политики для ActionScript 3 XMLSocket
-
25-09-2019 - |
Вопрос
Мы разработали специализированный сервер в .NET, чтобы провести несколько базовых функций чата / IM для нашего веб-сайта, и клиент написан в Flex (AS3) с использованием XMLSocket.
Теперь у нас есть 2 сервера, которые предназначены для чисто отправки файлов политики и одной обработкой функций IM / CHOT.
Проблема в том, что мы можем видеть подключение клиента, файл политики отправляется, но затем Flash игнорирует файл политики и запрашивает его снова с нашего чата / IM Server.
Политический файл:
<?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, но я имел в виду, что мы открыли один сервер, предназначенный для отправки файлов политики и один для обработки фактических подключений (оба на одной машине).
Проблема заключалась в том, что вам нужно немедленно отправить файл политики, не делая ничего другого на сервере политики.