Flash Crossdomain.xml Problèmes
-
23-08-2019 - |
Question
Je suis en train de charger Gravatars dans Flash. Heureusement, ils ont fourni un fichier crossdomain.xml à http://en.gravatar.com/avatar/crossdomain.xml
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: Erreur # 2123: Violation du sandbox de sécurité: LoaderInfo.content: [...] ne peut pas accéder http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon . Aucun politiques d'accès accordés.
à flash.display :: LoaderInfo / get contenu ()
à PiecePlayerSmall / onLoadComplete ()
J'ai également surveillé le trafic le fichier Flash envoie. Il est demandé:
- 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 ceci pour travailler et réduire le nombre de demandes de 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
La solution
Je suis autour d'un problème similaire en utilisant un LoaderContext . Voici un exemple de comment faire ceci:
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
context.securityDomain = SecurityDomain.currentDomain;
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);