Domanda

L'applicazione My Flash (AS3 / AIR) attualmente utilizza un'architettura leggermente insolita (per un'app Flash) per fornire classi di base particolari per il contenuto caricato in fase di esecuzione. Il contenuto esterno viene pubblicato con le classi di base "stub", che vengono eclissate dalle classi di base "reali" al momento dell'esecuzione quando viene caricato. Ho sentito questo definito da Adobe come bootstrap ( pdf ), e finora ha funzionato molto bene per me. Credo che non sia diverso da un'architettura DLL, anche se non sono qualificato a dirlo con certezza.

Fino ad ora, il contenuto esterno che ho caricato è stato caricato all'interno dello stesso SecurityDomain (stesso sandbox), il che mi consente di caricare facilmente il contenuto in un ApplicationDomain figlio . Sfortunatamente, per quanto ne so, un ApplicationDomain che comprende SecurityDomain non può essere correlato - cioè, non posso fare di una AppDom di una SecurityDom figlia di una AppDom da un altro SecurityDom.

Ma ora ho bisogno di caricare questo contenuto esterno dall'esterno della mia sandbox dell'applicazione. Esistono molti modi per ottenere la comunicazione attraverso SecurityDomain - sebbene la maggior parte di essi sia molto limitata, l'API AIR sandboxBridge è probabilmente la più potente. Sfortunatamente, nessuno di questi metodi di comunicazione mi consente di ottenere questa architettura di bootstrap.

Ho notato che l'oggetto LoaderContext ha una proprietà securityDomain , ma la sicurezza Flash impedisce a 'swfs locali' di toccarlo (genera un SecurityError o simile).

Il SWFLoader di Flex ha una proprietà trustContent che sembra promettente, ma sono propenso ad assumere che abbia le stesse restrizioni dell'impostazione di SecurityDomain nel LoaderContext di Loader .

Sospetto che dovrò riprogettare (il che non sarà facile), ma ho pensato di controllare qui che non mi sono perso qualcosa nella mia ricerca.

Quindi ... qualche idea o perla di saggezza? Mi farebbe molto piacere se qualcuno di Adobe che lavora sul modello di sicurezza potesse darmi un "sì / no definitivo che non può / non può essere fatto" ...

Grazie in anticipo!

Addendum: da allora ho deciso di riprogettare l'architettura in modo che tutto il bootstrap avvenga sul dominio esterno. La mia domanda rimane comunque per curiosità.

È stato utile?

Soluzione 2

Al momento della stesura, ho stabilito che non puoi caricare un ApplicationDomain nel tuo SecurityDomain se proviene da un altro dominio, anche con AIR.

Immagino.

Altri suggerimenti

Tecnicamente parlando, non sarebbe possibile per la tua applicazione AIR salvare semplicemente i file SWF esterni nella directory dell'applicazione e caricarli da lì in modo che vivano nella stessa sandbox di sicurezza?

Tuttavia, ci sono alcune ragioni davvero ovvie per cui questo potrebbe essere Bad Karma, quindi sembra che qualsiasi soluzione solleva necessariamente la questione se cercare di inserire il contenuto dell'applicazione locale e il contenuto remoto non attendibile nello stesso dominio dell'app sia l'approccio giusto per l'architettura ..?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top