xiangpei001
Flash/Flex构架师 / 广东
积分 0

Flex flash_player 沙箱安全解决办法


2010-08-26 点击:


做一个Flex新闻系统,新闻图片放置在另一个网站(favzone)的目录下,平时在开发的时候调试项目的时候,直接Run Application时,ie浏览器地址是(D:\FlexProject\favzone\bin-debug\fazone.html) ,这时候flash的沙箱安全级边为:
localTrusted (Security.LOCAL_TRUSTED):此文件是本地文件,并且用户已经使用 Flash Player“设置管理器”或 FlashPlayerTrust 配置文件将其设置为受信任的文件。此文件既可以从本地数据源读取数据,也可以与 Internet 进行通信。
这时你可以很方便去读任何internet网站上的资料而不会报安全错误。而当你把flex项目布署到服务器上用ebibi.com访问的时候,你再去读ebibi.com上面的图片的时候就会报如下错误.

SecurityError: Error #2122: 安全沙箱冲突:BitmapData.draw:http://localhost/ebibi/views/favzone.swf 不能访问 http://ebibi.com/attachments/month_0907/p200977225423.jpg?id=31。需要一个策略文件,但在加载此媒体时未设置 checkPolicyFile 标志。
由于图片列表是由后台db出来的,不能用load方案,或先把图片读过来再转给flash,因为是自己图片服务器可以放crossdomain.xml,具体做法如下:
1.将以下内容拷贝到crossdomain.xml
 

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


2.将crossdomain.xml放置到图片所在网站的根目录下.
3.在flex程序启动时调用
private function init():void{            
    flash.system.Security.loadPolicyFile("http://ebibi.com/crossdomain.xml");
}
 


    xiangpei001  版权所有
    禁止任何用途(禁止转载、商用和个人使用)


所属分类:技术经验分享

本文标签:flex Flash Player 沙箱安全

各位正在潜水的同学请注意,有0位无聊人士 在EBIBI附近出没!







    点击我更换图片 看不清
    评论内容 (*必填):

    (Ctrl + Enter 快速提交)