Проблема междоменных Flash / Flex - использование BitmapData.draw () для изображения из AWS S3 приводит к SecurityError: Ошибка № 2122: нарушение изолированной программной среды безопасности - PullRequest
2 голосов
/ 10 февраля 2012

Я использую BitmapData.draw () для объекта DisplayObject, который включает изображение из моей корзины AWS S3. Изображение отлично загружается в SWF, когда я устанавливаю URL-адрес изображения S3 в качестве источника для объекта Image, но когда я использую BitmapData.draw () для него, он выдает мне эту ошибку:

SecurityError: Ошибка № 2122: нарушение изолированной программной среды безопасности: BitmapData.draw: https://www.example.com/Example.swf не может получить доступ https://s3.amazonaws.com/example-images/example.jpg. Файл политики требуется, но флаг checkPolicyFile не был установлен, когда этот носитель был загружен.

AS код:

var bmpd:BitmapData = new BitmapData(objectToDraw.width,objectToDraw.height);
bmpd.draw(objectToDraw);

Я попытался поместить следующий файл crossdomain.xml в корень корзины S3, но безрезультатно:

<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>

1 Ответ

3 голосов
/ 26 февраля 2012

Есть два способа доступа к файлам на S3:

  • s3.amazonaws.com/[bucket name]/file.ext
  • [bucket name].s3.amazonaws.com/file.ext

Поскольку файл crossdomain.xml должен находиться в корневой папке домена, а у вас нет доступа к корневой папке s3.amazonaws.com, вы не можете контролировать файл crossdomain.xml, если используете первый метод

Если вы используете второй метод, вы можете поместить файл crossdomain.xml в корневую папку вашего контейнера, и он будет правильно использоваться Flash Player.

...