J'essaye de charger des Gravatars dans Flash. Heureusement, ils ont fourni un fichier crossdomain.xml à http://en.gravatar.com/avatar/crossdomain.xml
Flash Crossdomain.xml Problèmes
Mon code:
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"));
Mais je suis toujours à obtenir cette erreur:
SecurityError: Error #2123: Security sandbox violation: LoaderInfo.content: [...] cannot access http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon . No policy files granted access.
at flash.display::LoaderInfo/get content()
at PiecePlayerSmall/onLoadComplete()
J'ai aussi surveiller le trafic du fichier Flash envoi. Il est demandant:
- fichier crossdomain.xml de mon domaine
- "http://en.gravatar.com/avatar/crossdomain.xml"
- "http://en.gravatar.com/crossdomain.xml"
- "http://en.gravatar.com/"
- puis, http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon
Toutes les suggestions pour obtenir cette travailler et réduire le nombre de demandes à gravatar.com.
EDIT: Le code suivant fonctionne, grâce à Jacob
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);
Note: Ne pas essayer d'accéder au contenu directement dans le Event.COMPLETE
Que dois-je faire si ma demande ne figure pas dans mon domaine actuel? –
Si ce n'est pas votre domaine actuel, cela signifie que vous n'avez pas la permission d'accéder à leurs ressources. Dans ce cas, vous devez utiliser des méthodes de hack pour modifier le fichier crossdomain.xml. –