绕过安全沙箱限制加载在线图片
在做项目的时候有遇到这个问题,相信也会有很多人遇到这个问题:
SecurityError: Error #2122: 安全沙箱冲突:http://×。com/test.swf 不能访问 http://www.qqaw.com.cn/544.jpg。需要一个策略文件,但在加载此媒体时未设置 checkPolicyFile 标志。
或者是这样的问题:
Error #2044: 未处理的 securityError:。 text=Error #2048: 安全沙箱冲突:http://×.com/Test.swf 不能从 http://www.desk9.com/Desk9Image/12/795/46866_S.jpg 加载数据。
crossdomain.xml在服务器 和 根目录下都有配置 这让我很头疼。然后上网找,找到很多都是关于绕过限制的方法,但大多数的方法都是如下:
开始的代码:
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,comHandler); try{ loader.load(new URLRequest(url),lc); }catch(error:Error){ trace(error) };
搜到的更正代码是:
var lc:LoaderContext = new LoaderContext(); lc.checkPolicyFile = true; var loader :Loader= new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,comHandler); loader.load(new URLRequest(url),lc);
这里加了 LoaderContext 类 设置了checkPolicyFile 这个属性,由于ADOBE的安全机制,我们也不可能在其他域中去配置安全策略文件,所以我们可以通过这种方式来绕过安全限制。
查下API,http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/system/LoaderContext.html
大家可以查阅下。所以以下两行是可以去掉的
Security.allowDomain("*"); Security.loadPolicyFile("http://×.com/test/crossdomain.xml");