我的Flash(AS3 / AIR)应用程序目前使用稍微不寻常的架构(对于Flash应用程序)在运行时为加载的内容提供特定的基类。外部内容以“stub”基类发布,在加载时,它们在运行时被“真实”基类黯然失色。我听说Adobe将其称为 bootstrapping pdf ),直到现在它一直很好用。它与我认为的DLL架构没有什么不同,尽管我没有资格肯定地说。

到目前为止,我加载的外部内容已经从相同的 SecurityDomain (相同的沙箱)中加载,这使我可以轻松地将内容加载到子 ApplicationDomain 。不幸的是,据我所知,跨越 SecurityDomain ApplicationDomain 无法相关 - 也就是说,我无法将一个SecurityDom的AppDom作为AppDom的子代来自另一个SecurityDom。

但是现在我需要从我的Application沙箱外部加载这个外部内容。有很多方法可以实现 SecurityDomain 之间的通信 - 虽然大多数方法都非常有限,但AIR的 sandboxBridge API可能是最强大的。不幸的是,这些通信方法都不允许我实现这种自举架构。

我注意到 LoaderContext 对象有一个 securityDomain 属性,但Flash安全禁止'本地swfs'触摸它(它抛出 SecurityError 或类似的。)

Flex的 SWFLoader 有一个看起来很有希望的 trustContent 属性,但我倾向于认为它与设置 SecurityDomain 在 Loader LoaderContext

我怀疑我将不得不重新设计(这并不容易),但我想我只是在这里查看我的研究中没有错过任何内容。

那么......任何智慧的想法或珍珠?如果来自Adobe工作的安全模型的人可以给出一个明确的“是/否它可以/不能完成”,我会特别喜欢它。...

提前致谢!

附录:我决定重新设计架构,以便引导所有内容都发生在外部域上。然而,出于好奇,我的问题仍然存在。

有帮助吗?

解决方案 2

在撰写本文时,我确定您无法将 ApplicationDomain 加载到您自己的 SecurityDomain 中,如果它来自其他域,即使使用AIR也是如此。

按设计,我猜。

其他提示

从技术上讲,您的AIR应用程序是否可以简单地将外部SWF保存在应用程序目录中,并从那里加载它们以使它们位于相同的安全沙箱中?

然而,有一些非常明显的原因可能是Bad Karma,所以似乎任何解决方案都必然会引发一个问题,即尝试将本地应用程序内容和远程不受信任的内容放入同一应用程序域是否是正确的架构方法..?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top