Нарушение безопасности изолированной среды, не удается подключиться к серверу через сокет - PullRequest
4 голосов
/ 01 марта 2012

Перед тем, как начать, я должен заявить, что прочитал все это, я следил за этим , этим и этим (и более ...) и еще Я не могу подключиться к нашему работающему серверу через Socket через Интернет.

Вот что я пытаюсь сделать в AS3:

        var host :String = "192.168.2.11";
        Security.allowDomain(host);
        Security.allowInsecureDomain(host);
        Security.loadPolicyFile("xmlsocket://" + host + ":" +  "843");

        // TTS server socket
        _socket = new Socket();
        _socket.addEventListener(Event.CLOSE, handleClose);
        _socket.addEventListener(IOErrorEvent.IO_ERROR, handleError);
        _socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecError);
        _socket.addEventListener(ProgressEvent.SOCKET_DATA, handleIncomingData);
        _socket.addEventListener(Event.CONNECT, handleConnect);
        _socket.connect(host, 1337);

Как видите, хост является локальным адресом, но это не должно иметь значения, пока я нахожусь в этой локальной сети. И я, так как это работает с моей IDE (FD4). Кроме того, swf находится на том же сервере, что и приложение, к которому он пытается подключиться, но на другом порту.

Файл политики, отправляемый сервером (мы пробовали оба с порта 843 и 1337), выглядит следующим образом:

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

Мы можем видеть из выходных данных сервера, что это действительно отправляется в соединительный сокет. Нулевой байт, конечно, отправляется после XML-данных. И после этого сервер закрывает соединение. Однако, похоже, что Flash почему-то не нравится, так как «Ошибка № 2048» все еще появляется через ~ 3 секунды.

У нас тут действительно нет идей ...

1 Ответ

2 голосов
/ 05 марта 2012

Нам удалось заставить его работать, добавив еще один тег:

<site-control permitted-cross-domain-policies="master-only"/>

Кажется, этот тег необходим для того, чтобы заставить его работать.Мы не могли бы заставить его работать без этого тега, независимо от того, какой порт мы пробовали.

Таким образом, полный xml теперь выглядит так в нашем случае (его, конечно, легко модифицировать под любой случай):1006 *

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <site-control permitted-cross-domain-policies="master-only"/>
   <allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

Жаль, что эта строка не включена в собственный пример Adobe (!!) .Я имею в виду, это включено в файлы примеров, но не в статье .Я не хочу знать, сколько людей застряло на этом этапе из-за этого ...

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