Problemi Flash crossdomain.xml
-
23-08-2019 - |
Domanda
Sto cercando di caricare Gravatars in Flash. Per fortuna, ci hanno fornito un file crossdomain.xml a http://en.gravatar.com/avatar/crossdomain.xml
Il mio codice:
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"));
Ma sto ancora ricevendo questo errore:
SecurityError: Errore # 2123: Sicurezza sandbox violazione: LoaderInfo.content: [...] non può accedere http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon . Nessun file di criteri consentito l'accesso.
a flash.display :: LoaderInfo / ottenere contenuti ()
a PiecePlayerSmall / onLoadComplete ()
Ho anche monitorato il traffico il file Flash sta inviando. E 'richiesta:
- file crossdomain.xml del mio dominio
- " http://en.gravatar.com/avatar/crossdomain.xml "
- " http://en.gravatar.com/crossdomain.xml "
- " http://en.gravatar.com/ "
- poi, http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e ? s = 35 & d = Identicon
Qualche suggerimento per ottenere questo al lavoro e riducendo il numero di richieste per gravatar.com.
Modifica Il seguente codice funziona, grazie 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: Non tentare di accedere al contenuto direttamente nella Event.COMPLETE
Soluzione
ho avuto intorno a un problema simile utilizzando un LoaderContext . Ecco un esempio di come fare questo:
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);