![]() |
|
Модераторы: SoWa |
![]()
|
|
| Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: нет Всего: 5 |
Всем привет!
был уменя socket-клиент на as3. и с определенного момента (видимо flash-плеер обновился) в сокет первым делом стал писать строку <policy-file-request/> и ожидает видимо что ему crossdomain.xml отдатут. какого черта? во первых месяца полтора назад такого не наблюдалось, код не менялся. все происходит в рамках одного домена, порты выше 1024. из самого флеша ясен пень он такого не делает, а вот когда все кладешь на сервер и обращаешься браузером.... возможно обновился сам плеер (9,0,115,0), я то-то упустил в этой жизни? PS: ФАК! похоже и правда изменили модель безопастности начиная с версии 9,0,115,0 http://www.adobe.com/devnet/flashplayer/ar...ecurity_04.html A SWF file may no longer make a socket connection to its own domain without a socket policy file. Prior to version 9,0,115,0, a SWF file was permitted to make socket connections to ports 1024 or greater in its own domain without a policy file. может кто-нибудь обьяснит мне на пальцах как его хотябы по http заставить брать эту политику? пихать поддержку этого в сокет-сервер нет никакого желания... PPS: два раза ФАК! HTTP policy files may no longer be used to authorize socket connections. Prior to version 9,0,115,0, an HTTP policy file, served from the master location of /crossdomain.xml on port 80, could be used to authorize a socket connection to any port 1024 or greater on the same host. прям незнаю как дальше жить.... =( Это сообщение отредактировал(а) Ramirez - 31.12.2007, 05:24 |
|||
|
||||
| Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: нет Всего: 5 |
мда.... теперь подключаться к сокетам, даже в рамках одного домена без политики нельзя. политики предлагается раздавать 2-мя способами:
- Socket master policy file: предлагается вешать демон на 843 порт, который будет отвечать xml-файлом,в котором описано кто и к каким портам может на этом хосте подключаться. флеш плеер теперь всегда пытается получить плитику, если это неудается он никуда не коннектится без нее. этот демон по идее должен отвечать за все политики на этом сервере. - при попытке открыть сокет, флеш плеер создает еще одно подключение на тот-же хост/порт и спрашивает файл политики там. если политика получена и там есть разрешение коннектиться к этому хосту/порту первое подключение не закрывается. отсюда следует, что надо либо поднимать отдельного демона для раздачи политик, либо встраивать поддержку раздачи политик в сокет-сервер.... короче, непонятно зачем нужен был такой геморрой.... Да, и кстати: Adobe is applying with IANA, the Internet Assigned Numbers Authority, to reserve TCP port 843 for the purpose of serving socket policy files. This process may take a long time, but in the meantime Adobe is documenting this intended use of port 843 as broadly as possible. Это сообщение отредактировал(а) Ramirez - 1.1.2008, 19:32 |
|||
|
||||
| Ramirez |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: нет Всего: 5 |
Вот пакость-то! Кто-нибудь работал с политиками на сокеты?
Сделал простенький сокет сервер на 843 порту. Единственное что он умеет получать запрос, смотреть что в этом запросе есть строка: "policy-file-request" и отвечать на нее:
Да, кстати, флеш-плеер сам на этот порт не ломится (несмотря на документацию от адоба), поэтому перед созданием подключения делаю:
И все равно, нифига не работает.... смотрю тспдампом: флеш сначала честно идет на 843 порт, спрашивает там политику, получает ее, закрывает соединение, потом идет на нужныый мне порт, и снова спрашивает там политику... :( может ответ сервера политик надо как-то хитро сформировать? где грабли? |
||||
|
|||||
| Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: нет Всего: 5 |
Я, конечно, извиняюсь за настойчивость, но неужели никто не знает? Хотя-бы предположения? Нигде не могу найти никакой информации =(
|
|||
|
||||
| d3e |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 24.1.2008 Репутация: нет Всего: нет |
Я конечно извиняюсь, но где Вы это прочитали? Во всей документации адоб что я смог найти об этом ни слова, более того у меня прекрасно работают следующие строки: Security.allowDomain("192.168.0.2"); Security.loadPolicyFile("http://192.168.0.2/crossdomain.xml"); в файле у меня: <cross-domain-policy> <site-control permitted-cross-domain-policies="all"/> <allow-access-from domain="*" to-ports="80,6667,6669"/> </cross-domain-policy> соединяюсь классом Socket (import flash.net.Socket;) с клиента расположенного на другом хосте (192.168.0.1) Работает. Кстати сначала у меня было так: клиент сначала думает минуты две, а потом соединяется. В чем именно причина я не разобрался, однако сейчас работает нормально. Но для меня проблема сокет безопасности не решена, ибо в моем проекте требуется чтобы флеш устанавливал сокет соединение с 80 портом(но там не веб сервер), следовательно crossdomain.xml туда уже не положишь. буду пробовать встраивать в свой сервер ответ на request-policy, может быть что и получится Добавлено через 3 минуты и 59 секунд P.S. нашел где вы это прочитали, просто почему то гугл по дефолту на такой вот запрос: http://www.google.ru/search?aq=-1&oq=&...1%D0%BA&lr= не выводит ничего кроме вашего поста. буду разбираться, но в любом случае конструкция выше работает у меня на последнем флеш плеере Это сообщение отредактировал(а) d3e - 24.1.2008, 06:07 |
|||
|
||||
| Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: нет Всего: 5 |
d3e, а версия плеера какая?
Уменя по http он так и не захотел забирать политики на сокеты. Точнее политики полученные по http на сокеты не применяются. Зато мне таки удалось раздавать политики отдельным сокет-сервером на 843 порту того-же хоста (как я писал выше). как-то все это.... |
|||
|
||||
| Diesel Draft |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: нет Всего: 5 |
d3e, Ты наверно в IDE тестил. Ты попробуй забросить на сервер.
У меня та же проблема. Я хочу чат написать для IRC. Роботу почти закончил а тут такой сюрприз :(( |
|||
|
||||
| Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: нет Всего: 5 |
нет, все работает на сервере
|
|||
|
||||
| Diesel Draft |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: нет Всего: 5 |
можешь пример выложить?
|
|||
|
||||
| Saharochek |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 24.1.2008 Репутация: нет Всего: нет |
2Ramirez:
Кажысь нужно делать всё то же самое только на одном порту |
|||
|
||||
| Nikro |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
Нет, как написанно на сайте адоба грузить можно с любого порта... Я пробую запросить файл безопасности все происходит правильно, а при конете на порт уже рабочий повторного запроса файла нет так что все впорядке и рабоатет. А да забыл http://www.adobe.com/devnet/flashplayer/ar...ecurity_04.html внимателней читали бы ченж лог... Это сообщение отредактировал(а) Nikro - 22.4.2008, 12:34 |
||||
|
|||||
| Ramirez |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: нет Всего: 5 |
Если ты про сокет-сервер, то там у меня засада была правильно конец строки в ответе сервера поставить. Добавил к ответу:
и флеш стал нормально понимать ответы от сервера. собственно, нулевого символа достаточно было-бы. |
||||
|
|||||
| idti |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 28.2.2009 Где: pnz Репутация: нет Всего: нет |
Можно пример? А то у меня не работает=(
|
|||
|
||||
| idti |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 28.2.2009 Где: pnz Репутация: нет Всего: нет |
import java.io.*;
import java.net.*; class cross843 { private static cross843 server; ServerSocket socket; Socket incoming; BufferedReader readerIn; PrintStream printOut; public static void main(String[] args) { int port = 843; try { port = Integer.parseInt(args[0]); } catch (ArrayIndexOutOfBoundsException e) { // Catch exception and keep going. } server = new cross843(port); } private cross843(int port) { out("Start cross843"); try { socket = new ServerSocket(port); for (;;) { incoming = socket.accept(); readerIn = new BufferedReader(new InputStreamReader(incoming.getInputStream())); printOut = new PrintStream(incoming.getOutputStream()); boolean done = false; while (!done) { String StrRequest = ""; for (;;) { if (StrRequest.compareTo("<policy-file-request/>\0") != 0) { char BackChar = (char) readerIn.read(); StrRequest += BackChar; if (StrRequest == null || StrRequest.charAt(0) != '<') { done = true; break; } } else { InetAddress IA= incoming.getInetAddress(); out(IA.getHostName() + " [ " + IA.getHostAddress() + " ] " + "Write: " + StrRequest); String str1; str1 = ""; str1 += "<cross-domain-policy>\n"; str1 += "<allow-access-from domain=\"*\" to-ports=\"*\"/>\n"; str1 += "</cross-domain-policy>\0"; printOut.print(str1); out(IA.getHostName() + " [ " + IA.getHostAddress() + " ] " + "Read: " + str1); done = true; break; } } } incoming.close(); } } catch (Exception e) { System.out.println(e); } } private void out(String str) { System.out.println(str); } } crossdomain раздается у 843 порта=) |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 1 Всего: 18 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | ActionScript 3 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |