Почему Flash требует crossdomain.XML-файл, когда.SWF и HTTP-цель находятся на localhost?

у меня есть небольшое тестовое приложение клиент/сервер, где у меня есть приложение Flex, которое делает HTTP-запрос серверного приложения. Серверное приложение-это скрипт, запущенный на моем локальном компьютере, прослушивающий порт 8001. Клиент-это swf, который я запускаю локально, и использует mx.rpc.http.HTTPService, чтобы сделать запрос.

HTTPService настраивается согласно приведенному ниже:

_HttpService = new HTTPService();
_HttpService.url = "http://localhost:8001";
_HttpService.contentType = "text/xml";

когда я делаю основной запрос страницы, мое серверное приложение сначала получает "GET /crossdomain.xml HTTP/1.1" запрос, который не так как у меня нет перекрестного домена.XML-файл на месте. Причина, по которой у меня его нет, заключается в том, что все это происходит на моей локальной машине (пока), и мне он не нужен (я не думаю).

у меня определенно был этот код, работающий раньше без crossdomain.xml, когда я использовал Flex 3.X. Я думал, что он работает и с Flex 4. Теперь я использую Flex 4.5. Есть ли здесь проблема, возможно, из-за изменений политики безопасности?

со всем этим происходит на localhost, почему Flash player запрашивает crossdomain.xml-файл?

в случае, если это помогает, конкретная ошибка моего AsyncResponder возвращается:

[FaultEvent fault=[RPC Fault faultString="Security error accessing url" faultCode="Channel.Security.Error" faultDetail="Destination: DefaultHTTP"] messageId="F43DCBFF-E99A-99CC-57D8-535C13C7CD48" type="fault" bubbles=false cancelable=true eventPhase=2]

2 ответов


возможно, что, хотя у вас есть тот же хост и Протокол между страницей клиента и сервером, другой порт вызывает сбой Flash-теста того же происхождения и запрос crossdomain.xml, чтобы увидеть, что это разрешено делать. Я предполагаю, что страница с вашим флеш-контентом работает на порту 80? Если это так, ознакомьтесь со статьей Википедии о той же политике происхождения (http://en.wikipedia.org/wiki/Same_origin_policy) для деталей.

в междоменных.XML не кажется быть слишком громоздким для локального тестирования и довольно хорошо документировано на help.adobe.com - ... Вы можете создать crossdomain.xml в корне вашего сайта, как это, что позволит всем доступ:

<?xml version="1.0"?> 
<!-- http://localhost/site/crossdomain.xml --> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="all"/> 
    <allow-access-from domain="*" to-ports="*"/> 
</cross-domain-policy>

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

надеюсь, что это помогает!


использование policyfile.txt я понял, что файл политики был отклонен, потому что сервер не указал тип контента. Это объясняет, почему было невозможно найти что-либо в блоге об этом.

надеюсь, это кому-то поможет.

In Flex 4.5 Mac / Пользователи / [YOUR_USER_NAME]/библиотека/настройки/Macromedia/Flash Player / журналы>хвост-F policyfiles.txt