绕过安全沙箱限制加载在线图片

在做项目的时候有遇到这个问题,相信也会有很多人遇到这个问题:

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");

 

posted @ 2011-12-20 15:47  Hanami  阅读(1653)  评论(0编辑  收藏  举报