首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

绕开AS3保险沙箱 跨域加载SWF

2013-07-16 
绕开AS3安全沙箱 跨域加载SWFpublic function load():void??{? ?? ? // 第一个Loader用于使用url加载文件?

绕开AS3安全沙箱 跨域加载SWF

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? ?
}


注意:使用上面的方式,也应该注意B服务器上有crossdomain.xml文件?
??附:Flash Player的安全模型

您可以加载来自任何可访问源的内容。?

如果执行调用的 SWF 文件位于网络沙箱中并且要加载的文件是本地的,则不允许加载。?


如果加载的内容为用?ActionScript?3.0 编写的 SWF 文件,那么除非可以通过调用加载的内容文件中的 System.allowDomain() 或 System.allowInsecureDomain() 方法来允许跨脚本排列,否则另一个安全沙箱中的 SWF 文件不能对它执行跨脚本操作。

如果被加载的内容为 AVM1 SWF 文件(用 ActionScript 1.0 或 2.0 编写),则 AVM2 SWF 文件(用 ActionScript 3.0 编写)不能对它执行跨脚本操作。但是,可以通过使用 LocalConnection 类在两个 SWF 文件之间实现通信。

如果被加载的内容为图像,则除非该 SWF 文件的域包含在该图像原始域的跨域策略文件中,否则安全沙箱之外的 SWF 文件无法访问其数据。?

在只能与本地文件系统的内容交互的沙箱中的影片剪辑不能对只能与远程内容交互的沙箱中的影片剪辑使用脚本,反之亦然。

热点排行