Flex flash_player9 沙箱安全解决方案

     俺一直做java几年了,从来不写blog,发的第一篇竞然是flex的.......神拉,这是为什么?最近在搞一个Flex项目,由于产品图片数量已超W张,不可能放在flex项目的assets下面,因这这样eclipse频繁的build工程的时候太慢(要把你等晕过去,呵呵),所以把图片放在一台专用图片服务器下。如(img.com),平时在开发的时候调试项目的时候,直接Run Application时,ie浏览器地址是(D:\workspace\touchApp\bin-debug\touchApp.html) ,这时候你的flash的沙箱安全级边为:

  1. localTrusted (Security.LOCAL_TRUSTED):此文件是本地文件,并且用户已经使用 Flash Player“设置管理器”或 FlashPlayerTrust 配置文件将其设置为受信任的文件。此 文件既可以从本地数据源读取数据,也可以与 Internet 进行通信。

这时你可以很方便去读任何internet网站上的资料而不会报安全错误。而当你把flex项目布署到服务器上用touch.com访问的时候,你再去读img.com上面的图片的时候就会报如下错误.

  1. SecurityError: Error #2122: 安全沙箱冲突:BitmapData.draw:http://localhost:8080/touchapp/touchApp.swf
    不能访问 http://192.168.0.14/futurestore/upload/001-001/images/mobile/mob_pro_12447299112862.png
    需要一个策略文件,但在加载此媒体时未设置 checkPolicyFile 标志。  

由于图片列表是由后台db出来的,我也不能用load方案,或先把图片读过来再转给flash,因为是自己图片服务器可以放crossdomain.xml,网上很多资料说要在img.com根目录放crossdomain.xml文件,但我只想在upolad目录下放置crossdomain.xml文件,后来自己测试了很久发现,如果只在upload下面放crossdomain.xml时,debug项目时会出现

  1. 警告: 域 192.168.0.14 没有指定元策略。将应用默认元策略 'master-only'。此配置已停用。请访问 http://www.adobe.com/go/strict_policy_files_cn 以解决此问题。错误: 忽略位于 http://192.168.0.14/futurestore/upload/crossdomain.xml 的策略文件,因为使用了元策略 'master-only'。

由此可见还是需要给http://192.168.0.14/crossdomain.xml配置策略文件,并且此文件内容为:

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> <site-control permitted-cross-domain-policies="all" />  
    <allow-access-from domain="*" />  
    <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>  

 

这样就给域192.169.0.14指定了元策略。然后在flex项目的mx:Application文档中启动函数时加上flash.system.Security.loadPolicyFile("http://192.168.0.14/crossdomain.xml");然后以http://touch.com运行flex 时就不会出现可恨的沙箱错误了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值