Приложение OpenPeak Flash Проблема безопасности XMLSocket - PullRequest
1 голос
/ 12 марта 2010

Мы пытаемся создать приложение для OpenPeak. Приложение Flash будет действовать как клиент для сервера Java на другом компьютере в другом домене.

Клиент приложения Flash подключается через XMLSocket. Сервер Java использует ServerSocket для получения запроса и отправки сообщения обратно.

Чтобы доверять серверу, клиенту Flash требуется главный файл политики сокета, чтобы сообщить ему, что сервер происходит из надежного домена. Согласно статье в Adobe, при успешном соединении клиент Flash автоматически запрашивает междоменную политику или основной файл политики сокета на порту 843.

Тем не менее, даже если мы реализуем его в соответствии с прочитанными руководствами и рекомендациями, Flash-клиент продолжает выдавать следующую ошибку безопасности:

SecurityErrorEvent type = "securityError" bubbles = false cancellable = false eventPhase = 2 text = "Ошибка № 2048"

Мы попытались зарегистрировать запрос файла политики во время тестирования, чтобы увидеть, был ли сделан какой-либо вызов на порт 843. Не было.

Интересно, что даже без файла политики клиенту Flash по-прежнему удается успешно отправить первое сообщение с данными на сервер. Только когда сервер пытается отправить ответ, вся вещь зависает примерно на 10 секунд, прежде чем отобразится ошибка безопасности.

Есть идеи / предложения?

1 Ответ

0 голосов
/ 12 марта 2010

Для того чтобы flash мог получить доступ к другому домену, вам понадобится файл crossdomain.xml. Для этого вам, вероятно, потребуется указать пользовательский URL-адрес. Вот код, который вам нужен для этого:

flash.system.Security.loadPolicyFile("{Url to my crossdomain.xml file on the SSL virtual root}");

Ниже приведен пример файла, который отключает защиту Flash «Same Origin Policy» для домена, использующего этот файл. Настоятельно рекомендуется ограничить этот доступ к определенным доменам, но это не всегда возможно для некоторых приложений.

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*.*" secure="false" />
</cross-domain-policy>

Для отладки я бы использовал TamperData , чтобы убедиться, что флэш-память действительно загружает файл crossdomain.xml. Если вам нужно отладить rtmp или какой-либо другой протокол, отличный от http, вам придется использовать Wireshark.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...