Я получил это на работу! Перебирая все комбинации настроек безопасности ... теперь мне нужно понять, почему это работает.

м приложении Flex мне нужен элемент управления Javascript для вызова одного из моих методов Actionscript. Достаточно просто, согласно документации Flex / Actionscript, я написал это в своем коде Actionscript:

if (ExternalInterface.available)
    ExternalInterface.addCallback("setName", setNameInActiveWindow);

В элементе управления Javascript я написал:

document.getElementById('FlexAppId').setName(name);

Работает отлично. Именно так, как и ожидалось, поэтому я пошел в производство. Но он не работает в производстве :(. Точно такой же код ... Я не могу понять. Вышеприведенный код Javascript выполняется, но обратный вызов не выполняется в коде Actionscript.

Это как-то связано с безопасностью домена? Локально я использую local.mydomain.com:8080, где local.mydomain.com разрешается до 127.0.0.1 (мне нужно сделать это, чтобы некоторые виджеты работали правильно). И приложение Flex поставляется с того же локального веб-сервера. В производстве, однако, это всего лишь www.mydomain.com (mydomain.com не является настоящим доменным именем), а приложение Flex происходит от flash.mydomain.com (CDN).

У меня есть файл crossdomain.xml на сайте www.mydomain.com:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
        <site-control permitted-cross-domain-policies="master-only"/>
        <allow-access-from domain="*.mydomain.com"/>
</cross-domain-policy>

ОБНОВИТЬЯ попытался изменить локальную среду, чтобы ссылка на приложение Flex была на flash.mydomain.com, как в рабочей среде. Оказывается, я тоже получаю ту же проблему локально ... так что, похоже, это какая-то проблема безопасности домена, несмотря на файл crossdomain.xml, который у меня есть выше. Нужно ли что-то менять в моем файле crossdomain.xml? Есть ли что-то дополнительное, что мне нужно получитьExternalInterface.addCallback работать?

ОБНОВЛЕНИЕ 2Получил это на работу! Я должен был сделать обаSecurity.allowDomain("*") а такжеSecurity.allowInsecureDomain("*"), Установка его на flash.mydomain.com НЕ устранила проблему, я должен был установить шаблон.allowNetworking не имел никакого эффекта. я нуждаюсьallowScriptAccess="always", но у меня было это раньше. Вызов Javascript с помощьюExternalInterface.call легко работает только с этим параметром. Но добавив обратный вызов сExternalInterface.addCallback требует вышеуказанных методов безопасности с подстановочным знаком.

Ответы на вопрос(1)

Ваш ответ на вопрос