我的Flash(AS3 / AIR)应用程序目前使用稍微不寻常的架构(对于Flash应用程序)在运行时为加载的内容提供特定的基类。外部内容以“stub”基类发布,在加载时,它们在运行时被“真实”基类黯然失色。我听说Adobe将其称为 bootstrapping (pdf),直到现在它一直很好用。它与我认为的DLL架构没有什么不同,尽管我没有资格肯定地说。
到目前为止,我加载的外部内容已从同一个SecurityDomain
(相同的沙箱)中加载,这使我可以轻松地将内容加载到子ApplicationDomain
中。不幸的是,据我所知,跨越ApplicationDomain
的{{1}}无法相关 - 也就是说,我无法将一个SecurityDom的AppDom作为来自另一个SecurityDom的AppDom的孩子。
但是现在我需要从我的Application沙箱外部加载这个外部内容。有很多方法可以实现SecurityDomain
之间的通信 - 尽管大多数方法都非常有限,但AIR的SecurityDomain
API可能是最强大的。不幸的是,这些通信方法都不允许我实现这种自举架构。
我注意到sandboxBridge
对象具有LoaderContext
属性,但Flash安全性禁止“本地swfs”触摸它(它会抛出securityDomain
或类似物。)
Flex SecurityError
的{{1}}属性看起来很有前景,但我倾向于认为它与设置SWFLoader
中trustContent
的限制相同s SecurityDomain
。
我怀疑我将不得不重新设计(这并不容易),但我想我只是在这里查看我的研究中没有遗漏任何内容。
那么......任何智慧的想法或珍珠?如果来自Adobe工作的安全模型的人可以给出一个明确的“是/否它可以/不能完成”,我会特别喜欢它。
提前致谢!
附录:我决定重新设计架构,以便引导所有内容都发生在外部域上。然而,出于好奇,我的问题仍然存在。
答案 0 :(得分:1)
从技术上讲,您的AIR应用程序是否可以简单地将外部SWF保存在应用程序目录中,并从那里加载它们以使它们位于相同的安全沙箱中?
然而,有一些非常明显的原因可能是Bad Karma,所以似乎任何解决方案都必然会引发一个问题,即尝试将本地应用程序内容和远程不受信任的内容放入同一应用程序域是否是正确的架构方法..?
答案 1 :(得分:1)
在撰写本文时,我确定您无法将ApplicationDomain
加载到您自己的SecurityDomain
中,如果它来自其他域,即使使用AIR也是如此。
按设计,我猜。