Написание Flash crossdomain.xml для Amazon S3

У меня есть два сервера. Сервер A - это внутренний сервер, доступ к которому есть из внешнего мира, установленного здесь, в моем офисе. На нем запущен сервер Rails. У меня есть второй сервер, сервер B, который содержит весь наш статический контент (изображения, swfs, javascript, css и т. Д.), Это сервер Amazon S3. Я дал всем этим файлам публичный доступ.

Я пытаюсь поместить SWF-файл с сервера B на страницу, обслуживаемую сервером A. Затем другие ресурсы, которые требуются swf для отображения, динамически загружаются с сервера B. К сожалению, однако, где-то по пути это не удается и файлы, которые запрашиваются для динамической загрузки, просто не приходят.

Исходя из ошибок в консоли браузера, SWF ожидает, что файл crossdomain.xml будет находиться на сервере А. На основеэто, он также должен быть на моем сервере S3. Итак, в этом случае я создал два файла crossdomain.xml, по одному для каждого сервера.

Это файл crossdomain.xml сервера A:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM
  "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="s3-bucket-name.s3.amazonaws.com" />
</cross-domain-policy>

Это файл crossdomain.xml сервера B:

<?xml version="1.0" encoding="UTF-8"?>    
<!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="*.server-a.com"/>
  <allow-http-request-headers-from domain="*.server-a.com" headers="SOAPAction"/>
</cross-domain-policy>

Кроме того, я явно загружаю файл crossdomain.xml сервера B в свой swf:

Security.loadPolicyFile("https://s3-bucket-name.s3.amazonaws.com/crossdomain.xml");

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

Обновить Обновление моего вопроса с дополнительной информацией.

Я попытался установить оба файла политики на *, и он начал работать, пока не нажал:

SecurityError: Error #2121: Security sandbox violation: Loader.content: s3.amazonaws.com/bucket_name/swfs/foo.swf cannot access s3.amazonaws.com/bucket_name/data/swfs/bar.swf. This may be worked around by calling Security.allowDomain.

Кроме того, я запустил Чарльза, и он получает файл crossdomain.xml с моего локального сервера, но я не вижу его для s3.

Обновление 2 Я попытался добавить это в загрузчик:

var context:LoaderContext = new LoaderContext();
context.securityDomain = SecurityDomain.currentDomain;
context.applicationDomain = ApplicationDomain.currentDomain;
Loader.load(new URLRequest(_dataFile), context);

Это привело к загрузке файлов! К сожалению теперь это вылетает с этим:

SecurityError: Error #2119: Security sandbox violation: caller s3.amazonaws.com/bucket_name/swfs/MainSwf.swf cannot access LoaderInfo.applicationDomain owned by s3.amazonaws.com/bucket_name/data/swfs/foo/SecondSwf.swf

Я пытался включить / не включаяcontext.applicationDomain = ApplicationDomain.currentDomain; линия, но это не решило проблему.

Место, где происходит сбой, происходит позже, после загрузки файла, когда мы получаем домен приложения:loader_.contentLoaderInfo.applicationDomain.getDefinition( def.a )

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

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