问题描述
当我们加载外部域的图片或swf,并且想对其内容进去操作时报一个flash安全沙箱错误。
类似这样的:
SecurityError: Error #2122: 安全沙箱冲突:Loader.content:http://www.litefeel.com/crossSecurityBoxDemo.swf 不能访问 https://lite3-resouce.googlecode.com/svn/trunk/assets/image/duck.jpg。需要一个策略文件(crossdomain.xml),但在加载此媒体时未设置 checkPolicyFile 标志。
有这样几种安全沙箱错误:
- 需要一个策略文件,但在加载此媒体时未设置 checkPolicyFile 标志。
- 有一个策略文件,但未被授权访问或拒绝访问。
- 加载swf并要脚本互访时,未被授权访问,可以用Security.allowDomain解决。
解决方法
- 用Adobe建议的方法,添加策略文件,添加Security.allowDomain。
- 通过loadBytes绕过安全沙箱。
第一种方法是常规的方法,但是很多时候我们加载的图片不是自己的,对方服务器肯定不会给我们授权的。
那么这时第二种方法就派上用场了。
下面先看个demo再看源码。
这是一个绕过flash的安全沙箱的demo,如果你看不到这个flash,请到文章页面查看!
核心代码为
private function completeHandler(e:Event):void
{
try {
loader.content;
}catch (err:SecurityError)
{
loader.loadBytes(loader.contentLoaderInfo.bytes);
}
}
2012年12月21日更新:
release版的不能绕过安全沙箱获取可视对象的数据。
由于之前只在debug版的flash player测试过。对于release版的没测试过,现在用release版测试,如果没有策略文件的话loader.contentLoaderInfo.bytes
会是null
,也就是说在release版用此方法不可行。
不知道以前的release版能不能绕过,但是现在是不能绕过了,又少了一条路啊。
» 转载请注明来源:www.litefeel.com » 《绕过flash安全沙箱限制(security sandbox)读取可视对象数据》
» 本文链接地址:https://www.litefeel.com/cross-flash-security-sandbox-get-visual-data/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
» 本文链接地址:https://www.litefeel.com/cross-flash-security-sandbox-get-visual-data/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
This post was last modified on 2019 年 03 月 04 日 00:57
View Comments (18)
@1111
不知道是通过别的什么方法,能否分享下呢
@lite3
谢谢了,现在通过别的方法解决了 blog不错haha
@1111
dat,zip这些都是数据类型,只有视听类型的才能绕过安全沙箱,对于数据类型的,还是老老实实的用crossdomain.xml(策略文件)吧
请问下载dat,或者zip也可以用第二种方法么
@Marisol Perry
URLLoader是加载数据的,如果有安全沙箱并且没有策略权限,那么一开始就不能加载成功,所以URLLoader是不行的
可以用urlloader解决安全沙箱吗?@lite3
@Y.Boy 赞一下!
@yzyyzy163
URLLoader是加载数据的,如果有安全沙箱并且没有策略权限,那么一开始就不能加载成功,所以URLLoader是不行的 :roll:
可以用urlloader解决安全沙箱吗?@lite3
@Y.Boy
:grin:
@Y.Boy
赞一下!
现在才知道可以这样。 :grin:
@used golf clubs
no thanks. :razz:
Truly interestin details. Im happy I identified this submit. Thank you for sharing
很不错!
这个方法不错, :grin: 学习了。
@yzyyzy163
恩,是的,因为视觉对象是不需要策略文件的,但是数据就需要策略文件,要是xml这样是纯数据的就绕不过去了
没有办法加载XML了,用loader对于xml加载不了啊。xml是别的网站的偶