Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > Общие вопросы Web
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2012, 14:06   #1
[MoNAMur]
читер
Форумчанин
 
Аватар для [MoNAMur]
 
Регистрация: 05.10.2009
Сообщений: 150
Вопрос Flash Security error 2048

Здравствуйте. Пишу на AS 3 подключение к серверу.

Код подключения

Код:
package 
{
	import flash.display.Sprite;
	import flash.events.*;
	import flash.media.Sound;
	import flash.net.*;
	import flash.system.Security;
	import flash.external.ExternalInterface;
	
	public class MessengerGateInterface extends Sprite
	{
		private var bsocket:Socket;
		private var host:String;
		private var port:Number;
		
		public function MessengerGateInterface():void 
		{	
			Security.allowDomain("our.domain.com");
			Security.allowInsecureDomain("our.domain.com");
			Security.loadPolicyFile("http://our.domain.com/crossdomain.xml");
			
			this.bsocket = new Socket();
			
			this.bsocket.addEventListener(Event.CONNECT, this.onConnect);
			this.bsocket.addEventListener(Event.CLOSE, this.onClose);
			
			this.bsocket.addEventListener(ProgressEvent.SOCKET_DATA, this.dataHandler);
			this.bsocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.securityError);  
			this.bsocket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			
			this.setSettings("our.domain.com", 4434);
			this.connect();
			
			ExternalInterface.call("initGate");
		}
		
		public function securityError(event:SecurityErrorEvent):void
		{
			ExternalInterface.call("onSecurityError", event.toString()+" " + Security.REMOTE.toString());
			trace("Security error");
		}
		
		public function setSettings(host:String,port:Number): void
		{
			this.host = host;
			this.port = port;
		}
		
		public function connect(): void
		{
			this.bsocket.connect(this.host, this.port);
		}
		
		public function onConnect(event:Event): void
		{
			if (this.bsocket.connected) {
				ExternalInterface.call("successConnection");
				trace("success connection");
			}
		}
		
		public function onClose(event:Event): void
		{
			this.bsocket.close();
			ExternalInterface.call("onCloseConnection");
		}
		
		public function dataHandler(e:ProgressEvent): void {  
			if (bsocket.bytesAvailable>0) {
				ExternalInterface.call("receiveFromServer",bsocket.readUTFBytes(bsocket.bytesAvailable));
				trace("receive data");
			}
		}
		
		public function ioErrorHandler(event:IOErrorEvent):void
		{
			ExternalInterface.call("errorConnection");
			trace("error connection");
		}
		
		private function init(e:Event = null):void
		{
			new MessengerGateInterface();
		}
	}
}
Код crossdomain.xml
Сам файл лежит в корне сайта our.domain.com
Код:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="our.domain.com" to-ports="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
Фрагмент сервера
Код:
 
QString data = QString(clientConnection->readAll());
 if(data == "<policy-file-request/>"){
       QString answer = QString("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\"><cross-domain-policy><site-control permitted-cross-domain-policies=\"all\"><allow-access-from domain=\"our.domain.com\" to-ports=\"*\"/><allow-http-request-headers-from domain=\"*\" headers=\"*\"/></cross-domain-policy>");
        clientConnection->write(answer.toStdString().c_str());
        echo("Send Policy Data");
        return;
   }
Генерируется ошибка:
Цитата:
Security Error #2048
В чем может быть проблема? Как решить?
$me = $me == $me ? $me : $me;

Последний раз редактировалось [MoNAMur]; 04.09.2012 в 14:22.
[MoNAMur] вне форума Ответить с цитированием
Старый 10.09.2012, 17:58   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Неделю бился над этой проблемой)))
В конце ответа не хватает нулевого байта. Мой код
Код:
    if ( QString(inputData) == "<policy-file-request/>" )
    {
        QString policy = "<cross-domain-policy><allow-access-from domain='*' to-ports='*'/></cross-domain-policy>";
        _sok->write(policy.toUtf8().append(QChar::Null));
        _sok->flush();
    }
Cronos20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра 2048 visual c++ Raitek Visual C++ 0 16.03.2015 17:13
replacing invalid security id with default security id for file XXXXXX Alar Операционные системы общие вопросы 3 01.02.2012 23:31
Не получается принять TCP/IP пакет более 2048 байт. Visual C++ Gvaler C/C++ Сетевое программирование 3 28.09.2011 23:00
Error #2048 => не могу играть в приложеня в контакте FakToP_PuCKa Общие вопросы по Java, Java SE, Kotlin 1 28.08.2009 19:53
Security error komex JavaScript, Ajax 2 02.04.2008 19:05