Flex: загрузить XML из Flex SWF - PullRequest
       10

Flex: загрузить XML из Flex SWF

0 голосов
/ 10 августа 2009

Я создаю (настольное) приложение с flex, но AIR не вариант. (Я слышал, вам нужен air-installer для воспроизведения .exe) Моему гибкому приложению нужно загрузить сгенерированный php xml, но оно должно запускаться из файла swf при экспорте сборки выпуска.

При тестировании моего flex-приложения на локальном хосте все в порядке. XML загружен, и я получаю данные. Однако после того, как я экспортирую сборку релиза и запускаю .swf, у меня появляется сообщение о безопасности (песочница), говорящее, что он не может загрузить XML с веб-страницы.

Кто-нибудь знает способ обойти это? Кто-нибудь знает, действительно ли необходим установщик для запуска .exe? (у меня есть только Mac)

Ответы [ 3 ]

2 голосов
/ 10 августа 2009

Из-за ограничений безопасности Flash Player, который вы запускаете в песочнице. Если вы запустите приложение SWF, у него будет URL-адрес, похожий на file: /// path / to / my / app, который помещает его в локальный файл sadbox (который является наиболее ограниченным местом для запуска swf). AIR также предоставляет локальную изолированную программную среду файловой системы, но вы получаете возможность доступа к локальным файлам и сохранения на диск. Если вы используете SWF с http://example.com, вы находитесь в контекстном объявлении example.com и можете загружать контент из этого домена. Если вам нужно загрузить контент из другого домена, вам понадобится файл политики crossdomain.xml в другом домене, где живет контент / служба.

альтернативный текст http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security/fig01.gif

В этой статье подробно объясняется концепция файла crossdomain.xml. Вот пример, который разрешает соединение из ЛЮБОГО домена в ресурсы:

<?xml version="1.0"?>
<cross-domain-policy>
    <allow-access-from domain="*" />
    <site-control permitted-cross-domain-policies="master-only"/>
</cross-domain-policy>

, который будет работать в вашем случае.

1 голос
/ 11 августа 2009

Поскольку приложение Flex будет запускаться из локальной файловой системы - через обработчик file: // или просто как c: \ mypp \ mySwf.swf, на самом деле вам нужно позаботиться о двух компонентах безопасности:

  • Во-первых, как уже упоминалось в ответах выше, необходимо убедиться, что с вашей php-страницей можно связаться. Это решается с помощью файла политики crossdomain.xml.

  • Вторая проблема связана с тем, как она работает - локально. Flash имеет четыре песочницы (удаленная, локальная с файловой системой, локальная с сетью и доверенная). По умолчанию все SWF-файлы из Интернета помещаются в удаленную изолированную программную среду; те, которые запускаются локально, по умолчанию устанавливаются на локальную с файловой системой == нет сетевых вызовов.

Возможно, вы захотите изменить изолированную программную среду, в которую она помещается. Для локальной системы с файловой системой / сетью вы можете просто настроить флаг в компиляторе Flex (например, с помощью параметров Flex Builder). Однако следует отметить одну вещь: вы можете иметь только одну - либо загружать данные из локальной системы или из сети. И то и другое одновременно не может быть достигнуто.

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

0 голосов
/ 10 августа 2009

вам нужно будет добавить файл междоменной политики, его короткий текст в формате xml говорит о том, что flex разрешено общаться с этим удаленным объектом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...