![]() |
Socket securityError :: Error #2048
Всем добрый вечер :)
Когда я запускаю флэшку в IDE, все работает замечательно, но при запуске из браузера Socket выдает ошибку... Для создания подключения в коде флэшки as3: Код AS3:
Код:
-= Server =-Код:
[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]Код AS3:
|
кроссдомейн оно просит по 443 порту, а если там нет, то у сокета. вроде так.
и еще у XMLSocket строки нуль-треминированные, не работает у вас поэтому, наверное. Добавлено через 3 минуты сорри, у вас Socket, а не XMLSocket. попоробуйте флюшить его после записи в него кроссдомейна. |
Внимательно читаем и ищем отличия:
Цитата:
Цитата:
Цитата:
|
Цитата:
Попробовал вставить Код AS3:
Код AS3:
Код AS3:
2gloomyBrain вроде бы файл запрашивается правильно (или нет?), но flash на него никак не реагирует |
нет, флюшить его надо на той стороне, которая отдает контент, после отдачи контента.
это если вы после отдачи контента не закрываете соединение. Если закрываете - оно автоматом отфлюшиться должно. |
Цитата:
|
Цитата:
Код:
socket_write($send_sock, $crossdomain, strlen($crossdomain));Цитата:
Код:
Security.loadPolicyFile("http://"+MP_SERVER_IP+"/crossdomain.xml");Код:
Security.loadPolicyFile("xmlsocket://"+MP_SERVER_IP+":"+MP_SERVER_PORT);Код:
New client connected: 91.200.106.130 (Total 1 clients) |
вы путаете понятия нулевой байт с...даже не знаю как это назвать.
Вобщем, нулевой байт - это байт с кодом ноль �. У вас в логе он расположен самым последним символом, сразу после "<policy-file-request/>" в той же строке. А вторая надпись в логе " -- Client said:" -- это никакой не нулевой байт, это вообще не байт, там пустой буфер. Если вы там сделаете echo strlen($data), то получите 0. А если вы еще и распечатете там часики, то увидите, что клиент дропает сокет не сразу, а по истечении таймаута. это наводит на мысль, что можно попытаться отдавать полиси нуль-терминированным. Попробуйте. то есть после присвоения прицепляете в конец ноль: $crossdomain .= "\0"; и потом уже с ним работаете. c XMLSocket только так и работает. кстати, у вас кроссдомейн странный. нате вам мой, с уже прцепленным нулем: PHP код:
когда заработает будете последовательными приближениям приближать к своему варианту и так найдете где он там спотыкается. |
При запуске флэшки из браузера с debug версией флэша, спустя 15 секунд после подключения:
Код:
Connection securityError: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048: Нарушение изолированной среды: http://91.200.106.130/xxx.swf?36072 не может загрузить данные из 91.200.106.130:10014."]В логе все происходит в одну секунду, после "<policy-file-request/>" флэшка сразу шлет пустой буффер: Код:
[07:16:43] New client connected: 91.200.106.130 (Total 1 clients)Код сервера: Код AS3:
Код AS3:
|
Цитата:
Цитата:
После отключения флешка должна подключиться заново. Если этого не происходит - значит Вы отдаете некорректный policy файл. |
и после отключения флэшка еще долго думает перед тем как сообщить ошибку, не говоря уже о том, что при
Код:
Security.loadPolicyFile("xmlsocket://"+MP_SERVER_IP+":"+MP_SERVER_PORT);если это о чем-то скажет - то тестовую флэшку можно увидеть здесь: http://91.200.106.130/pb2/socket_test.swf Если http://91.200.106.130 грузится (значит мой компьютер с сервером включен), то по идее и кнопка CONNECT должна работать, но она работает только через IDE. у меня в браузерах - нет. Добавлено через 24 минуты Код:
Ошибка: [строгий] Игнорирование файла политики на xmlsocket://91.200.106.130:10014 из-за неправильного синтаксиса. Сведения об устранении этой проблемы см. на веб-сайте http://www.adobe.com/go/strict_policy_files_ru.Добавлено через 1 час 42 минуты ничего не пойму... все же правильно вроде :confused: |
да вроде все правильно -- я давал кроссдомейн из рабочего примера! Правда у меня был XMLSocket, но это не должно играть роли.
Может быть, Socket-у как раз нуль-терминированной строки не нравятся, в отличии от XMLSocket-а... Фиг его знает. я еще заметил, у вас адрес устанавливается $address = '0.0.0.0'; попробуйте, что ли айпишник туда свой внешний поставить. Я не уверен, что вы сделали правильно, засветив свой внешний ip -- его могут роботы увидеть и что-то нехорошее вам слать. Надо адреса шифровать, типа как я это сделал ниже. вобщем. Остюда 78.iii.21 точка 150 двоеточие 10000 слешь sock.php1 заменяете буквы i на едницу и скачиваете (если у меня комп включен) пример, который работает, правда, с XMLSocket. Вам только нужно будет свой адрес и порт поставить. Попробуйте не 0.0.0.0, а вписать туда свой внешний. О результатах доложите. И попробуйте не делать во флешке Security.loadPolicyFile, так как флеш автоматом должна запросить его. |
chabapok, Ваш сервер работает на ура! :yahoo:
подменил адрес с портом (на "0.0.0.0" и 10014) и все заработало с первого раза! еще до конца не понял в чем дело, но похоже дело было все-таки в серверной части :) Спасибо огромное за помощь еще раз :) |
Какой в итоге должен быть код нормально работающего PHP сервера? Скиньте пожалуйста если есть у кого-то.
|
Я помню мы тоже долго мучились с этим кросдомейном, оказалось, что нужно выключить использование IPv6 на сервере
|
Проблема полностью идентична с авторской. Судя по посту автор написал что проблема в серверной части. Но в чем именно не понятно. Знает кто решение?
|
Плюсую gloomyBrain. После запроса файла политик сокет себя отключает и если с файлом политик все ок - пподключает заново.
|
| Часовой пояс GMT +4, время: 09:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.