安全沙箱(SandBox)

来源:互联网 发布:linux arp缓存都是0 编辑:程序博客网 时间:2024/05/16 01:49

  Flex中可以通过Security.sandboxType属性来判断安全沙箱类型。

 

  1.网络访问的swf文件,Security.sandboxType值为remote,这种情况下通过服务器上的跨域文件crossdomain.xml判断是否能够跨域访问。比如http://site1/flash1.swf需要访问http://site2上的资源,则需要在site2服务器上crossdomain.xml中添加site1的访问许可,crossdomain.xml放在wwwroot目录下。

 

  2.本地访问的swf文件,Security.sandboxType值为localTrusted、localWithNetwork、localWithFile三者之一。localWithNetwork仅允许访问网络资源,localWithFile仅允许访问本地资源,localTrusted两者均可。默认值为localWithNetwork。

 

  因此在使用Flex进行编译时,如果访问本地资源将会产生安全沙箱错误。

 

  解决方法一:更改工程属性,Flex Compiler - > Additional compiler arguments

(Flex3),加上"-use-network=false",该选项强制Security.sandboxType为localWithFile,带来的问题是无法访问网络资源.

 

  解决方法二:更改工程属性,Run/Debug Settings - > Main ->Url or path to lauch,改为通过Url加载Flash,这样Security.sandboxType为remote,本地资源的相对路径也将作为网络相对路径进行访问。

 

  解决方法三:如果是Flash 9,可以通过本地文件系统设置Flash Player Trust directory,将swf文件所在目录放入Flash Player Trust directory中,这样该swf安全沙箱类型Security.sandboxType为localTrusted。

 

  解决方法四:如果是Flash 10,要添加Flash Player Trust directory,只能通过Flash Player Settings Manager,该工具位于Adobe网站,链接http://www.macromedia.com/support/documentation/cn/flashplayer/help/settings_manager04a.html,将目录添加到全局安全设置的信任列表中,改变安全沙箱类型为localTrusted,注意信任目录中不能包含中文字符。