Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Flash и XMLSocket (http://www.flasher.ru/forum/showthread.php?t=73708)

Den0k 06.01.2006 14:38

на самом деле можно использовать порты и ниже 1024, но для этого надо иметь возможность разместить на порте ниже 1024 свой сервер.
Затем загрузить сертификат безопасности при помощи loadPolicyFile().

в данном случае наверно имеет смысл использовать порт выше 1024.

__i 06.01.2006 14:41

loadPolicyFile() - незнал об это, спасибо за просвещение!!!

K.A.T.A.F.A.L.K.E.R 06.01.2006 15:35

Цитата:

Сообщение от Den0k
на самом деле можно использовать порты и ниже 1024, но для этого надо иметь возможность разместить на порте ниже 1024 свой сервер.
Затем загрузить сертификат безопасности при помощи loadPolicyFile().

в данном случае наверно имеет смысл использовать порт выше 1024.

Можно? Как? Я пробовал - дело даже не в том что не коннектится, он вообще ничего не делает! Ни тебе success ни его отсутствие... Ставишь, к примеру, 8080 - говорит, что не смог подключиться. Ставишь 43 - молчит :rolleyes:

Den0k 06.01.2006 15:48

Сам я делал это давно и только ради эксперемента,
вот нашёл чем я тогда руководствовался:

"Дмитрий Гурский для ПРОФЕССИОНАЛОВ ActionScript 2.0"

"17.1.5. Преодоление ограничений для сокетов

Flash-плейер дает возможность получать данные с сервера непосредственно по протоколу TCP, а
не по HTTP, как это обычно происходит в случае сайтов. Для этого со стороны клиента использу-
ется класс XMLSocket, а со стороны сервера — особые приложения, так называемые сокеты-
серверы. Подробно о сокетах поговорим ниже, а пока обсудим лишь ограничения, накладываемые
на них политикой безопасности Flash MX 2004.
Еще во Flash 5, когда появился класс XMLSocket, были запрещены подключения к портам с номе-
рами меньше 1024. Это было связано с необходимостью блокировать возможность атаки на порты
стандартных служб (они исторически имеют номера от 0 до 1024). Во Flash MX 2004 ограничения,
связанные с безопасностью, усилились. Теперь фильм может установить соединение с сокетом-
сервером на домене лишь в том случае, если он сам был получен с этого домена. Чтобы преодо-
леть это ограничение, нужно создать сертификат безопасности точно так же, как и в случае им-
порта данных по HTTP. Перед тем как установить соединение с соке-том на домене, плейер про-
верит наличие файла crossdomain.xml на 80 порту (т. е. запросит его у HTTP-сервера), Если он там
обнаружится и «родной» домен фильма окажется дружественным, то соединение будет создано.
Синтаксис сертификатов безопасности для сокетов точно такой же, как и для импорта данных по
HTTP. Единственное, нужно задать дополнительный атрибут to-ports тега <allow-access-from>, в
котором указывается, доступ к каким портам должен быть разрешен для фильмов домена, пропи-
санного в атрибуте domain. Указать в качестве допустимых несколько доменов можно, прописав
их номера через запятую. Чтобы задать интервал доменов, нужно использовать запись «beginend
», где begin — номер начинающего интервал домена, end —- номер домена, который завершает
интервал. Если значением атрибута to-ports сделать «*», то фильм сможет подключиться к любому
порту с номером больше 1024. По умолчанию нельзя разрешить доступ к порту с номером меньше
1024. Пример сертификата безопасности для сокета:

<?xml version="l.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="www.mysite.ru" to-ports="2020"/>
<allow-access-from domain="*.narod.ru" to-ports="1024-65535"/>
<allow-access-from domain="*" to-ports="1025,1026"/>
</cross-domain-policy>

Обычно фильм получает сертификат безопасности по HTTP. Это не всегда удобно. Например, до-
мен, на котором установлен сокет-сервер, может просто не иметь HTTP-сервера (он традиционно
занимает 80 порт). Устанавливать же сервер только из-за сертификата безопасности нерациональ-
но. Лучше запросить его непосредственно у сокета-сервера. Сделать это позволяет метод
loadPolicyFile() объекта System.security. В качестве параметра он принимает строку с URL, задан-
ную по следующей схеме: «xmlsockct://domain:port», где «xmlsocket://» — префикс, указывающий
на то, что сертификат должен быть получен не по HTTP; domain — имя домена, на котором распо-
лагается сервер; port — занимаемый сокетом-сервером порт.

Например:
var connection:XMLSocket=new XMLSocket();
System.security.loadPolicyFile("xmlsocket://www.mysite.ru:2045");
connection.connect("www.mysite.ru", 2045);

Отправлять сертификат безопасности может как тот же сервер, с которым должно быть установ-
лено соединение, так и любой другой, Настроить его нужно исходя из того, что плейер, запраши-
вая сертификат, посылает сообщение «<cross-domain-request/>», завершаемое нулевым байтом. В
ответ сервер должен отправить текст сертификата, завершив сообщение нулевым байтом. Получив
его, плейер разорвет соединение.
У метода loadPolicyFile() имеется огромное преимущество, которое заставляет обращаться к нему
даже тогда, когда на домене имеется HTTP-сервер. Загружая сертификат безопасности при помо-
щи loadPolicyFileO, можно разрешить доступ фильму к портам с номерами меньше 1024 (то есть к
портам стандартных служб). Для этого сам сертификат должен быть получен с порта с номером,
не превышающим 1024 (если вы смогли разместить на таком порте свой сервер, значит у вас дос-
таточно высокий административный доступ, чтобы позволить вашему фильму обращаться к стан-
дартным портам). Сертификат, загруженный с порта, номер которого больше 1024, или по HTTP,
не может дать допуск на подключение к стандартным портам.
До выхода Flash 7 для установки соединения со стандартным портом приходилось создавать на
сервере прокси-сцtнарий, который, получая данные от фильма, пересылал их на нужный порт.
"



Спасибо людям, умеющим объяснять:)

K.A.T.A.F.A.L.K.E.R 06.01.2006 15:53

да уж, спасибо :) Поэкспериментирую как-нить... Когда припечет... :D


Часовой пояс GMT +4, время: 17:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.