загрузка SWF из AmazonS3 - междоменная политика - PullRequest
2 голосов
/ 25 февраля 2010

У меня есть flash-приложение в домене A, которому нужно загрузить SWF-файл из корзины Amazon S3. При загрузке я получаю следующую ошибку. "Error #2044: Unhandled securityError:. text= "

Я положил файл междомена в корзину и предположил, что это поможет. Как я могу это исправить?

Ответы [ 3 ]

9 голосов
/ 25 февраля 2010

Вы можете получить доступ к S3, используя имя DNS. Таким образом, вместо s3.amazon.com/bucketname/filename это будет bucketname.s3.amazon.com/filename. Используя этот метод, вы можете поместить свой собственный файл междомена в корневой каталог

<allow-access-from domain="bucketname.s3.amazonaws.com" />

Лучшим способом является использование записей CNAME на вашем DNS-сервере для фальсификации корня вашего файла междомена. например,

Создайте запись CNAME на вашем DNS-сервере, чтобы указать bucketname.yourdomainname.com на bucketname.s3.amazon.com

А затем поместите файл междомена в корень этого сегмента

<allow-access-from domain="bucketname.yourdomainname.com" />

И ссылаться на флеш-файлы как bucketname.yourdomainname.com/flash.swf и т. Д.

1 голос
/ 25 февраля 2010

Загрузка SWF-файлов - это не то же самое, что загрузка данных. Таким образом, вам может понадобиться больше, чем просто crossdomain.xml. Чтобы увидеть, где он ищет файл crossdomain.xml, я бы порекомендовал использовать инструмент «сниффинг» (например, httpfox), чтобы узнать, где Flash Player ищет файл.

Чтобы разрешить взаимодействие SWF из разных доменов, вам также необходимо позвонить Security.allowDomain. Подробности смотрите в документации Adobe по кросс-скриптингу .

0 голосов
/ 25 февраля 2010

Ваш междоменный файл должен находиться на сервере с приложением flash, которое выполняет загрузку, а не с файлами, в которые он загружается. Затем вы указываете домен S3 в качестве разрешенного домена.

<allow-access-from domain="s3.amazonaws.com" />

Редактировать: Хорошо, я официально запутался.

Кажется, JB прав в своем комментарии о том, что я неправильно понял. С здесь :

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

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

Так как же работает наш сайт? Согласно документации, это не должно!

Редактировать 2

Согласно комментарию Воутера, то, что я делаю, является особым случаем, который объясняет, почему он работает для меня, даже если мои междоменные файлы находятся в неправильном месте ...

...