Пытаюсь загрузить Gravatars во Flash. К счастью, они предоставили файл crossdomain.xml по адресу http://en.gravatar.com/avatar/crossdomain.xml
.
Мой код:
Security.loadPolicyFile("http://en.gravatar.com/avatar/crossdomain.xml");
var loader:Loader = new Loader();
loader.load(new URLRequest("http://en.gravatar.com/avatar/" + gravatar + "?s=35&d=identicon"));
Но я все еще получаю эту ошибку:
SecurityError: Ошибка № 2123: нарушение изолированной программной среды безопасности: LoaderInfo.content: [...] не удается получить доступ к http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon. Доступ к файлам политик не предоставлен.
в flash.display :: LoaderInfo / get content ()
в PiecePlayerSmall / onLoadComplete ()
Я также отслеживал трафик, который отправляет файл Flash. Он запрашивает:
- Файл crossdomain.xml моего домена
- "http://en.gravatar.com/avatar/crossdomain.xml"
- "http://en.gravatar.com/crossdomain.xml"
- "http://en.gravatar.com/"
- затем http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon
Любые предложения, как заставить это работать и уменьшить количество запросов к gravatar.com.
РЕДАКТИРОВАТЬ: следующий код работает, спасибо Джейкобу
Security.loadPolicyFile("http://en.gravatar.com/avatar/crossdomain.xml");
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
context.applicationDomain = ApplicationDomain.currentDomain;
var request:URLRequest = new URLRequest(
"http://en.gravatar.com/avatar/" + gravatar + "?s=35&d=identicon");
var loader:Loader = new Loader();
loader.load(request, context);
this.addChild(loader);
Примечание. Не пытайтесь получить доступ к содержимому непосредственно в Event.COMPLETE.