Загрузка изображений профиля на VK.com в ActionScript

У меня есть приложение iframe в vk.com. Я могу использовать их API, все выглядит хорошо, но когда я хочу загрузить изображения профиля, я получаю Security Sandbox Error. Когда я печатаю результат и ошибки, я получаю это: (Я использую Greensock ImageLoader)

MYURL: 'URL моего изображения на поддомене cs408919 в vk'
Загрузка CrossDomain на cs408919
ScriptAccessDenied: Ошибка № 2048
SecurityError: Ошибка № 2048
Ошибка: Ошибка № 2048
ScriptAccessDenied: Ошибка № 2123 Нарушение безопасности изолированной программной среды, нет доступа к файлам политики

Мне кажется, проблема crossdomain.xml, но я не смог найти подходящую. Спасибо...

2 ответа

Решение

Да, это междоменная проблема, поддомены vk для изображений не предоставляют crossdomain.xml для пользовательских аватаров, но вы все еще можете загрузить (и добавить в список отображения) их. Что вы не можете сделать, так это получить доступ к загруженному контенту (и установить smooth растровый флаг, например, или draw дырка с изображениями на ней).

Если вам нужен доступ к контенту, вы можете использовать этот "взлом политики", но он взломан, поэтому его можно исправить в любом обновлении FP (думаю, даже этот ответ может приблизить этот момент:)):

Идея состоит в том, чтобы прослушать событие ADDED, если image Loader:

protected var _prepareloaderBitmap:Bitmap;

_prepareloader.addEventListener(Event.ADDED, onPrepareLoader);
_prepareloader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPrepareLoader);

И слушатель:

protected function onPrepareLoader(event:Event):void
{
    //event ADDED fired only for Bitmap (not for SWFs)
    if(event.type == Event.ADDED)
    {
        _prepareloaderBitmap = event.target as Bitmap;
    }
    else if (event.type == Event.COMPLETE)
    {
        if(_prepareloaderBitmap)
        {
            trace("loaded image size:", _prepareloaderBitmap.width, "x", _prepareloaderBitmap.height);
        }
    }
}

Имея ссылку на загруженный Bitmap Теперь вы можете добавить его вместо кросс-доменного загрузчика.

В дополнение к ответу fsbmain я хочу сказать, что вы должны добавить следующий код:

Security.allowDomain("*");
Другие вопросы по тегам