【发布时间】:2009-09-08 16:24:59
【问题描述】:
下面的代码是简化的例子
我正在开发一个 AIR 应用程序(使用 Flex),它从远程 Web 服务器加载其几个图像。图像显示正常,但是,每当我操作保存远程加载图像的容器时,我的控制台中都会出现错误:
*** Security Sandbox Violation ***
SecurityDomain 'http://www.google.com/intl/en_ALL/images/logo.gif' tried to access incompatible context 'app:/sandbox_test.swf'
图像似乎没有受到影响,但我不喜欢显示我不理解的错误。下面是一个示例应用程序来说明问题:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication width="500" height="500" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:HDividedBox width="100%" height="300" horizontalCenter="0" verticalCenter="0" backgroundColor="#000000" liveDragging="true">
<mx:Image source="http://sstatic.net/so/img/logo.png"/>
<mx:Image source="http://www.google.com/intl/en_ALL/images/logo.gif"/>
</mx:HDividedBox>
</mx:WindowedApplication>
如果使用 HDdivedBox 上的拖动器进行拖动,则会出现安全错误。
我查看了 AIR 的一些安全类/安全沙箱内容,但默认情况下 AIR 应该可以访问网络资源(我认为这就是加载图像的原因)。使用 Security.allowDomain("www.google.com") 不是 AIR 中的选项 - 它只会引发 SecurityError。
有谁知道是什么原因造成的,或者如何解决? (或者也许它只是一个 Flex/AIR 错误?)。
另外 - 有没有人知道当错误发生时是否有办法中断,以便我可以追踪到导致它的根本操作?
【问题讨论】:
-
您是否使用调试器来确定安全错误何时真正触发?是在绘图阶段吗?
-
当错误触发时调试器实际上并没有中断,它们只是打印到控制台。目前尚不清楚如何追踪它们的来源
标签: apache-flex security air