微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swf 绕过沙箱的一种解决方法

AS3的安全沙箱的确是让人很无奈,本篇文章仅用于解决一个特定的问题,即A服务器上的SWF文件通过http访问B服务器上的文件,此时即使B服务器上设置了allowdomain.xml,也无济于事,B服务器上被加载的文件除必须的allowdomain.xml外,还必须使用Security.allowDomain("*")才能消除安全沙箱(注:此时只能是swf文件才能设置,图片等无法设置)。对于无法使用Security.allowDomain("*")的文件,我们就可以使用下面这种方式。
使用Loader加载外部文件的时候,如果不出现错误文件是可以成功加载进来的,只不过是在使用该文件时,flash会报安全沙箱错误,我们可以使用一种方式绕过该安全沙箱,具体操作如下:
1、首先使用一个Loader加载一个外部SWF,监听Loader.contentLoaderInfo的Event.COMPLETE事件;
2、加载成功后,先暂时不使用这个加载成功的Loader,而是另写一个Loader,使用Loader.loadBytes()来加载第一个Loader的contentLoaderInfo.bytes;
3、在第二个Loader加载成功后,就可以使用被加载的文件了;
示例代码
public function load():void  {       // 第一个Loader用于使用url加载文件       var loader1:Loader = new Loader();       loader1.contentLoaderInfo.addEventListener(Event.COMPLETE,loader1Complete);       loader1.load(new URLRequest("文件url"));   }     private function loader1Complete(event:Event):void  {       var loaderinfo:LoaderInfo = event.target as LoaderInfo;       // 第二个Loader用于加载第一个Loader加载进来的bytes       var loader2:Loader = new Loader();       loader2.contentLoaderInfo.addEventListener(Event.COMPLETE,loader2Complete);       loader2.loadBytes(loaderinfo.bytes);   }     private function loader2Complete(event:Event):void  {       // 在这里可以使用被加载进来的文件了       // event.target as displayObject   }    public function load():void   {    // 第一个Loader用于使用url加载文件    var loader1:Loader = new Loader();    loader1.contentLoaderInfo.addEventListener(Event.COMPLETE,loader1Complete);    loader1.load(new URLRequest("文件url"));   }      private function loader1Complete(event:Event):void   {    var loaderinfo:LoaderInfo = event.target as LoaderInfo;    // 第二个Loader用于加载第一个Loader加载进来的bytes    var loader2:Loader = new Loader();    loader2.contentLoaderInfo.addEventListener(Event.COMPLETE,loader2Complete);    loader2.loadBytes(loaderinfo.bytes);   }      private function loader2Complete(event:Event):void   {    // 在这里可以使用被加载进来的文件了    // event.target as displayObject   } 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐