Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Сокеты и политика безопасности (http://www.flasher.ru/forum/showthread.php?t=111646)

sp2k6 04.05.2008 17:22

Сокеты и политика безопасности
 
Народ, вот такая ситуация:
Есть пхп демон, который играет роль сокет-сервера, стоит на одном домене, есть flex приложение - клиент, который лежит на другом домене и коннектится к серверу. На стороне сервера в корне сервера лежит файл crossdomain.xml, со следующим содержимым:
Код HTML:

<cross-domain-policy>
<allow-access-from domain="*" to-ports="9876"/>
</cross-domain-policy>

На сервере, в случае запроса через сокет "<policy-file-request/>" отправляю содержимое crossdomain.xml и закрываю сокет.

На клиенте по creationComplete() есть следующий код:
Код:

Security.loadPolicyFile('http://myhost.ru/crossdomain.xml');
В итоге, часто у пользователей появляется ошибка, вызываемая по евенту onSecurityError у класса Socket (сейчас не могу точно сказать что за ошибка, вечером напишу), и у меня у самого после обновления флеш-плеера появилась такая же ошибка, переустанавливал плеер, ставил более раннюю версию - ничего не помогает.
Вот адрес самой флешки: http://vkontakte.ru/apps.php?act=s&id=3933&mid=187882,
адрес crossdomain.xml: http://flyostrie.ru/crossdomain.xml

etc 04.05.2008 17:25

crossdomain.xml нужно отдавать либо по тому же сокету, к которому происходит коннект, либо по порту 843.

Т.е. для сокетных соединений crossdomain.xml, лежащий на http-сервере, работать не будет.

sp2k6 04.05.2008 17:27

Все так и делаю, использую свой рабочий порт 9876, если приходит строка "<policy-file-request/>" - отдаю crossdomain.xml и рву коннект.

И еще главная непонятность - почему у кого то работает, а у кого то нет? Подозреваю что это зависит от версии flash - плеера.

etc 04.05.2008 17:29

А где на клиенте строка Security.loadPolicyFile("xmlsocket://flyostrie.ru:9876"); ?

А подозрение верное, потому как раз в последнем билде плеера это реализовано.

sp2k6 04.05.2008 17:33

Вообще она раньше вызывалась перед созданием сокета, но от неё толку не было и я её закомментил, то есть, другими словами сейчас её вообще нет.

etc 04.05.2008 17:34

Цитата:

Сообщение от sp2k6 (Сообщение 737034)
Вообще она раньше вызывалась перед созданием сокета, но от неё толку не было и я её закомментил, то есть, другими словами сейчас её вообще нет.

Теперь она нужна.

sp2k6 04.05.2008 17:39

ага, понял, то есть, у тех, у кого старая версия плеера и без этой "Security.loadPolicyFile("xmlsocket://flyostrie.ru:9876");" строки работало, а у тех, кто обновил плеер этой строки как раз и не хватает... Спасибо за разъяснение, дома перекомпилю - отпишусь о результате!
Но, вопрос, почему же тогда плеер отправляет запрос "<policy-file-request/>" серверу, если в коде нет запроса "Security.loadPolicyFile("xmlsocket://flyostrie.ru:9876");" ?

etc 04.05.2008 17:49

Плеер всегда пытается стянуть кроссдоменник. Последний билд сначала лезет на 843-ий порт, потом на тот же порт, на который открыт сокет. Основной сокет по какому порту работает?

sp2k6 04.05.2008 17:56

По 9876.

etc 04.05.2008 18:27

Хм, тогда не уверен, что строчка поможет.


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

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