Problemas de Flash crossdomain.xml
-
23-08-2019 - |
Pregunta
Estoy intentando cargar Gravatars en Flash. Por suerte, proporcionaron un archivo crossdomain.xml en http://en.gravatar.com/avatar/crossdomain.xml
Mi código:
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"));
Pero todavía estoy recibiendo este error:
SecurityError: Error # 2123: entorno limitado de seguridad violación: LoaderInfo.content: [...] no puede tener acceso http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon . No hay archivos de política permite el acceso.
en flash.display :: LoaderInfo / obtener el contenido ()
en PiecePlayerSmall / onLoadComplete ()
También monitorearon el tráfico del archivo Flash está enviando. Se solicita:
- archivo crossdomain.xml de mi dominio
- " http://en.gravatar.com/avatar/crossdomain.xml "
- " http://en.gravatar.com/crossdomain.xml "
- " http://en.gravatar.com/ "
- a continuación, http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e ? s = 35 & d = Identicon
¿Alguna sugerencia para conseguir que esto funcione y reducir el número de solicitudes de gravatar.com.
EDIT: funciona el siguiente código, gracias a 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);
Nota: No trate de acceder al contenido directamente en el Event.COMPLETE
Solución
Tengo en torno a un problema similar mediante el uso de un LoaderContext . Aquí está un ejemplo de cómo hacer esto:
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);