Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблемы с настройкой безопасности (http://www.flasher.ru/forum/showthread.php?t=124569)

vvvvvvf 04.05.2009 01:19

Проблемы с настройкой безопасности
 
Доброго времени суток.

Делаю приложение для вконтакте.ру.
Столкнулся с проблемой при обращении к собственному серверу, в лоадере срабатывает событие SecurityErrorEvent.SECURITY_ERROR, может кто то с таким уже сталкивался подскажите как можно во флешьке настроить безопасность чтобы в приложениях в контакте можно было свободно обращаться к своему серверу?

Добавлено через 3 минуты
вот класс который я использую для конекта, самое интересное что с моего компа все нормально работает, а если добавляю флешьку в приложения вконтакте, то срабатывает это событие dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);.

Код AS3:

package {
        import flash.display.Sprite;
        import flash.events.*;
        import flash.net.*;
        import flash.text.*;
 
        public class URLLoader_loadExample extends Sprite {
                private var xmlTextField:TextField = new TextField();
 
                public function URLLoader_loadExample() {
                        xmlTextField.text = "Loading.";
                        var loader:URLLoader = new URLLoader();
                        configureListeners(loader);
 
                        var request:URLRequest = new URLRequest("http://www.server.ru/game/1.php");
                        try {
                                loader.load(request);
                        } catch (error:Error) {
                                xmlTextField.text = "Unable to load requested document.";
                        }
 
                        xmlTextField.x = 10;
                        xmlTextField.y = 10;
                        xmlTextField.background = true;
                        xmlTextField.autoSize = TextFieldAutoSize.LEFT;
                        addChild(xmlTextField);
                }
 
                private function configureListeners(dispatcher:IEventDispatcher):void {
                        dispatcher.addEventListener(Event.COMPLETE, completeHandler);
                        dispatcher.addEventListener(Event.OPEN, openHandler);
                        dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
                        dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
                        dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
                        dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
                }
 
                private function completeHandler(event:Event):void {
                        var loader:URLLoader = URLLoader(event.target);
                        xmlTextField.text = "completeHandler: " + loader.data;
 
                        var vars:URLVariables = new URLVariables(loader.data);
                        xmlTextField.text = "The var=status is " + vars.status;
                }
 
                private function openHandler(event:Event):void {
                        xmlTextField.text = "openHandler:" + event;
                }
 
                private function progressHandler(event:ProgressEvent):void {
                        xmlTextField.text = "progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal;
                }
 
                private function securityErrorHandler(event:SecurityErrorEvent):void {
                        xmlTextField.text = "securityErrorHandler: " + event;
                }
 
                private function httpStatusHandler(event:HTTPStatusEvent):void {
                        xmlTextField.text = "httpStatusHandler: " + event;
                }
 
                private function ioErrorHandler(event:IOErrorEvent):void {
                        xmlTextField.text = "ioErrorHandler: " + event;
                }
        }
}


BlooDHounD 04.05.2009 01:24

поиск на этом форуме не выключали. я думаю вопрос поднимался не одну сотню раз.
а вообще crossdomain.

vvvvvvf 04.05.2009 01:40

Цитата:

Сообщение от BlooDHounD (Сообщение 817321)
поиск на этом форуме не выключали. я думаю вопрос поднимался не одну сотню раз.
а вообще crossdomain.

Как я понял я должен попросить администратора вконтакте.ру добавить мой сайт в список этого crossdomain, а что разве нету другого способа настроить безопасность?

я считаю это бред какой-то!

AL.exe 04.05.2009 02:34

Цитата:

я должен попросить администратора вконтакте.ру добавить мой сайт в список этого crossdomain
Именно :)

etc 04.05.2009 07:36

Цитата:

Сообщение от vvvvvvf (Сообщение 817323)
Как я понял я должен попросить администратора вконтакте.ру добавить мой сайт в список этого crossdomain, а что разве нету другого способа настроить безопасность?

я считаю это бред какой-то!

Приложение где лежит? Если на доменах vkontakte, то это вам нужно на своём сайте размещать кроссдоменник, с разрешением подключаться с доменов vkontakte. И вообще, что-то я сомневаюсь, что сей момент был пропущен в документации к API.

Nyra 22.05.2009 11:51

Здравствуйте! Я столкнулась с аналогичной проблемой.
Мне нужно чтобы форма обратной связи работала как приложение для в контакте.
В самом флеше следующий код:
Код:

Security.loadPolicyFile("http://site.ru/folder/crossdomain.xml");


submitButton.addEventListener(MouseEvent.MOUSE_UP , sendForm);
function sendForm(event:MouseEvent):void {
        if  ( emailBox.text.indexOf("@" ) == -1  ||  emailBox.text.indexOf("." ) == -1 ) {
                submitMessages.text = "Пожалуйста, введите свой e-mail";
        } else if  (instBox.text == "" ) {
                submitMessages.text = "Пожалуйста, введите название института";
        } else {
                submitToPHP();
        }
}


function submitToPHP() {

var variables:URLVariables = new URLVariables();
var request:URLRequest = new URLRequest();
request.url="http://site.ru/folder/sendform.php";
request.method=URLRequestMethod.GET;
request.data=variables;

variables.name_text=nameBox.text;
variables.inst_text=instBox.text;
variables.email_text=emailBox.text;

var loader:URLLoader = new URLLoader();
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, completeHandler );
try {
        loader.load(request);
        submitMessages.text="Отправка письма...";
} catch (error:Error) {
        trace(error.message);
        submitMessages.text="Невозможно отправить";
}
function completeHandler(event:Event):void {
        trace(event.target.data.successMessage);
        submitMessages.text=event.target.data.successMessage;
        so.clear();
        nameBox.text="";
        instBox.text="";
        emailBox.text="";
}
}

В crossdomain.xml по адобовской справке поставила:
Код:

<?xml version="1.0"?>
<!-- http://site.ru/folder/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>

на своем хостинге поставила права доступа к folder, crossdomain.xml и sendform.php 777... В документации к API http://vkontakte.ru/pages.php?o=-1&p... API ВКонтакте сего момента не нашла...

вобщем не работает. Подскажите, пожалуйста, в чем ошибка.

etc 22.05.2009 18:31

Так какая ошибка? SecurityError?

Nyra 22.05.2009 18:36

чесно говоря не знаю, просто сообщение не отправляется с контакта, OUTPUT не знаю как посмотреть, когда флешка загружена как приложение.
при запуске на локальной машине никаких ошибок не выдает, спокойно отправляет письма и они доходят.
могу исходники выложить

ancle feudor 30.05.2009 22:36

была такая же проблема с получением loader.content.
решение - использовать LoaderContext

klafuda_klalafu 15.06.2009 18:20

никак не могу подцепить кроссдомен !... наверно делаю что то неверно! помогите
Код AS3:

public function start():void{
      //политика безопастности
      Security.loadPolicyFile("http://localhost/crossdoamin.xml");
      Security.allowDomain("http://localhost");       
      cfgXML = new XML();
      var loader:URLLoader = new URLLoader();
      configureListeners(loader);
      loader.load(new URLRequest("http://localhost/cfg.xml"));
}

так правильно ??? чего не хватает ?
не работает и все тут ....
как не крутись
файл лежит в домене к примеру nethost
и с локалхоста берет XML ,.... если запустить из под флеша работает как тока через браузер .... фигвам!


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

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