Вопрос

У меня проблемы со сценарием XMLSocket в AS3. У меня есть сервер Java, и я пытаюсь отправить данные XML, но сервер ничего не уходит. Самым удивительным является то, что мой сценарий работал очень хорошо месяц назад, и теперь мой слушатель IOerror возвращает меня:

"Ошибка № 2031: Ошибка сокета. URL: 127.0.0.1 At test () at client_fla :: maintimeline/frame1 ()"

и мой слушатель безопасности:

«Ошибка #2048: нарушение песочницы безопасности: файл: /// c | /докаментов%20And%20Settings/zeph/bureau/client.swf не может загрузить данные с 127.0.0.1:18000. At test () at client_fla :: maintimeline/ Frame1 () "

Я попытался изменить IP, я попробовал на другом компьютере, я попытался вытащить прежнюю версию моего сценария, которая не изменилась, без результата.

Я просто не могу понять, почему это перестало работать так. Вот мой сценарий:

package
{

    import flash.net.XMLSocket;
    import flash.events.*;
    import flash.display.MovieClip;

    public class test extends MovieClip 
    {

        public function test()
        {
            trace("pouet");
            var xmlsock:XMLSocket = new XMLSocket(); 
            xmlsock.connect("127.0.0.1", 18000);
            var xmlFormattedData = new XML('<message pseudo="Nix" value="Coucou !"/>'); 
            xmlsock.send(xmlFormattedData);
            xmlsock.addEventListener(DataEvent.DATA, onData);
            xmlsock.addEventListener(IOErrorEvent.IO_ERROR, ioerror);
            xmlsock.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secuerror);
            xmlsock.send(xmlFormattedData);

        }

        private function onData(event:DataEvent):void 
        { 
            trace("[" + event.type + "] " + event.data); 
        }


        private function ioerror(event:IOErrorEvent):void 
        { 
        trace(event);
        }

        private function secuerror(event:SecurityErrorEvent):void 
        { 
        trace(event);
        }

    }

}

Я злюсь на это, у кого -нибудь есть идея?

Спасибо за чтение!

Это было полезно?

Решение

Ошибка предполагает, что вы запускаете флэш -приложение из своей локальной файловой системы, и это приложение хочет сделать сетевой запрос (на ваш сервер Java).

Это не разрешено по умолчанию. Вы можете сделать одну из двух вещей:

  • Обновите свои глобальные настройки безопасности в своем флэш -плеере (щелкните правой кнопкой мыши, расширенные настройки, глобальные настройки безопасности, затем установите файл Flash или всю папку, которая будет разрешена выполнять сетевые запросы)

  • Запустите свое флэш -приложение с веб -сервера (и убедитесь, что на сервере Java находится CrossDomain.xml).

Другие советы

Как указывает ваша ошибка, вы испытываете нарушение безопасности песочницы. Это означает, что Flash не допускает активов из доменов приложений, кроме его собственных. В основном есть два исправления, одно более проще, чем другое:

  1. Прочитайте, как создать и загрузить CrossDomain Xml. Анкет Это просто «политика» на сервере, которую читает ваше запуск Flash Application. Это может быть сложно правильно настроить, но это общепринятый маршрут.

  2. В настройках вывода в разделе «Локальная безопасность воспроизведения» вы можете проверить «доступа к сетевым файлам» вместо «только для получения доступа только о локальных файлах» - и быстро решить вашу проблему.

Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top