Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex &引用;“自举”;应用程序安全域中的远程swf(actionscript3)_Apache Flex_Actionscript 3_Air_Applicationdomain_Securitydomain - Fatal编程技术网

Apache flex &引用;“自举”;应用程序安全域中的远程swf(actionscript3)

Apache flex &引用;“自举”;应用程序安全域中的远程swf(actionscript3),apache-flex,actionscript-3,air,applicationdomain,securitydomain,Apache Flex,Actionscript 3,Air,Applicationdomain,Securitydomain,我的Flash(AS3/AIR)应用程序目前使用了一种稍微不同寻常的架构(对于Flash应用程序),为运行时加载的内容提供特定的基类。外部内容是使用“存根”基类发布的,在加载时,这些基类在运行时会被“真实”基类所掩盖。我听说Adobe将其称为bootstrapping(),到目前为止,它一直对我很有效。我相信这和DLL体系结构没有什么不同,尽管我没有资格肯定这一点 到目前为止,我一直在加载的外部内容都是从同一个安全域(同一个沙盒)中加载的,这使我能够轻松地将内容加载到子应用程序域。不幸的是,据我

我的Flash(AS3/AIR)应用程序目前使用了一种稍微不同寻常的架构(对于Flash应用程序),为运行时加载的内容提供特定的基类。外部内容是使用“存根”基类发布的,在加载时,这些基类在运行时会被“真实”基类所掩盖。我听说Adobe将其称为bootstrapping(),到目前为止,它一直对我很有效。我相信这和DLL体系结构没有什么不同,尽管我没有资格肯定这一点

到目前为止,我一直在加载的外部内容都是从同一个
安全域
(同一个沙盒)中加载的,这使我能够轻松地将内容加载到子
应用程序域
。不幸的是,据我所知,跨越
SecurityDomain
s的
ApplicationDomain
s是不相关的-也就是说,我不能使一个SecurityDom的AppDom成为另一个SecurityDom的AppDom的子级

但现在我需要从我的应用程序沙箱外部加载此外部内容。有很多方法可以实现跨
SecurityDomain
s的通信-尽管大多数方法非常有限,但AIR的
sandboxBridge
API可能是最强大的。不幸的是,这些通信方法都不允许我实现这种自举架构

我注意到,
LoaderContext
对象有一个
securityDomain
属性,但是Flash security禁止“本地swf”接触它(它抛出一个
SecurityError
或类似的属性)

Flex的
SWFLoader
有一个
trustContent
属性,看起来很有希望,但我倾向于假设它与在
加载程序
LoaderContext
中设置
SecurityDomain
具有相同的限制

我怀疑我将不得不重新设计(这并不容易),但我想我应该在这里检查一下,我的研究中没有遗漏什么

所以。。。有什么想法或智慧之珠吗?如果Adobe的安全模型开发人员能给我一个明确的“是/否,它可以/不能完成”,我会特别喜欢它

提前谢谢


附录:我已经决定重新设计架构,以便在外部域上进行引导。然而,出于好奇,我的问题仍然存在。

从技术上讲,AIR应用程序是否可以简单地将外部swf保存在应用程序目录中,然后从那里加载它们,使它们位于同一个安全沙箱中


然而,有一些非常明显的原因可以解释为什么这会是一种恶果,因此似乎任何解决方案都必然会提出这样一个问题:将本地应用程序内容和远程不受信任的内容放在同一个应用程序域中是否是正确的架构方法?

在撰写本文时,我确定如果某个应用程序域来自另一个域,即使使用AIR,也无法将其加载到您自己的
安全域中


我猜是出于设计。

从技术上讲,不是:AIR应用程序不能修改自己的应用程序目录。AIR应用程序有一个本地存储文件夹用于保存数据,但同样,这是一个单独的安全域。但是,是的,我完全同意这件坏事。flash安全模型是由非常聪明的人设计的,目的是实施一系列最佳实践,因此逆水行舟有点愚蠢。在我的辩护中,外部域是“可信的”(w.airquotes),但这不是真正的重点。啊。。。我知道应用程序修改其应用程序目录内容有一些限制,但我认为它们是可以覆盖的。鉴于此,我不知道你最初的目标是否可行。我已经决定这是不可能的,因为我找不到任何人/任何事来告诉我。如果可能的话,我不知道怎么做,所以不管怎样,结果都是一样的!谢谢你的回答,fenomas。即使你能做到,修改应用程序的文件夹也会破坏其他东西。。。一个是加密存储,只要你接触其中一个应用程序文件,你就不会在访问存储时失败。你最终使用了什么方法?:)我在stackoverflow.com/questions/1020397/…上发布了一个有点相关的问题,我很想得到反馈/因为你似乎一直在与第三方外部swf合作:)Freddy,我想知道我的问题现在是否有点过时了,就像我在FP10 beta.Wow上写的那样。超过一千次的浏览量和净零票。哈。