flash安全沙箱问题

解决”安全沙箱冲突”的第一种方法:是通过配置跨域文件来实现的,但因为作者未写明细节,所以看不出配置文件所在的域是A还是B。

刚才 load 一张网络上的图片,发现不能用 setMask 对其遮罩,trace 出现“安全沙箱冲突”。知道原因就好办了,调用不同域的对象或变量需要 allowDomain,如下:

System.security.allowDomain("www.zhugao.cn");
loadMovie("http://www.zhugao.cn/images/links/links_zhugao.jpg", my_mc);

注意,“www.zhugao.cn”和“zhugao.cn”不是相同域,根据目标而定。例如 loadMovie("http://player.zhugao.cn/***.jpg", my_mc); 那么 allowDomain 的应该是 player.zhugao.cn,而不是 zhugao.cn,也不是 www.zhugao.cn

如果要允许多个域,可以用逗号隔开:
System.security.allowDomain("www.zhugao.cn", "zhugao.cn", "player.zhugao.cn");

播放器在 8.0 以上可以使用通配符 “*” 来允许所有域:
System.security.allowDomain("*");


解决:”FLASH3.0安全沙箱” 问题的方法二:
利用JS脚本绕过安全沙箱(有待验证,如果可以也不失为一种体面的解决办法!)

Flash作为一种客户端的前台脚本技术,本来是不应该赋予更强大的功能的。

但是随着Flash技术的发展,目前已然能够读xml文件,载入多媒体内容,

甚至直接与服务器端进行Socket通信。

当然,这些还不够,Flash与js,Flash与Flash之间也已然实现了交互通信。

这样导致的结果就是带来了大量令人头疼的安全问题。

于是Flash在它的AS3.0里提出了安全沙箱这一概念。

在未经授权的情况下,Flash默认状态是不允许进行跨域通信的,这样就使得Flash的安全可靠性得到了提高。

可同时也带来了意想不到的麻烦:我制作了一个Flash,在页面中用js脚本控制as脚本,然后使用FlashCS3的发布功能发布了该Flash,

上传到网站上后,问题出现了,此时Flash无论执行任何访问外界的as脚本均会提示安全沙箱问题!

即使是打开链接地址也会出现警告!

解决的办法很简单,连我自己后来都觉得很诧异:将调用Flash的参数:allowScriptAccess的值改为always即可。

例如:<param name="allowScriptAccess" value="always" />

用js来控制Flash的安全访问?是不是有点自欺欺人?

解决”安全沙箱冲突”的方法三:使用Asp.Net绕过As3的跨域安全沙箱
完全的文件转发,以极低的效率来解决了问题,基本无实用价值.作者有大段的代码就没有全部复制,请根据上面引用详细阅读。
As3的SandBox这点上有点让人感觉非常郁闷。

如果要取不同域上的文件(比如歌曲,图片等),当对方服务器没有crossdomain.xml的时候就会出现安全沙箱错误。

这点有点郁闷。

中午午饭后,想到这个问题,于是用Asp.Net写了个Web Proxy。通过Asp.Net进行资源的转发,解决了跨域的安全沙箱问题。

不过这个东东会加大服务器的带宽和计算压力~

解决”安全沙箱”的方法四:一种猥琐的图片跨域的方法似乎是利用了Flex本身的疏漏来达到特定访问图片的方法,但由于作者代码的不完全,作为初学的我还无法完全理解他的思路,还请大家指教这个。

今天看到达达(ASFlex)的博文,关于跨域的问题,突然想起来我之前[原]淘宝店家起义篇。。。要做的实验之一,遂趁当前下班时间,在公司里写了一段测试代码。

果然是无法Draw的,在帮助文档已经明确的写了......................................

如何突破呢? 还是以后直接拿TextField来用?

以此标记,下回,改用AVM1+AVM2混合内容测试

目前方法是猥琐的抽出Loader来用

测试连接:
www.xintend.com/temp/icd/index.html

有兴趣的同学可以去玩下~~ 图片可以拖动~~~~~~~

核心 代码部分:


01. function handleLoadBtn():void {
02. var s:String = urlInput.text;
03. var ht:String = "<img src='";
04. if (s.length > 0) {
05. ht += s;
06. ht += "' ";
07. ht += "id='image'>";
08. tf.htmlText = ht;
09. output.text = ht;
10. output.text += "\n";
11. output.text += tf.getImageReference("image");
12. var c:DisplayObject = tf.getImageReference("image"); 1
3. ui.addChild(c);
14. output.text += "\n ui.addChild(c);";
15. }
16. }


解决本地的安全沙箱,我本地测试的时候倒没遇到过!
经常在本机调试flash的时候,会报安全沙箱问题,除了去adobe的网站(www.macromedia.com/suppor ... ings_manager04.html)上添加本机的目录外,还可以有一种更简单的办法,

[color=red]在C:\windows\system32\Macromed\Flash\FlashPlayerTrust 下面,添加一个txt文件,例如songhuan .txt,然后在里面添加你的本机的目录,例如f:\songhuan\ 或者c:\都可以。以后在哪里报错了,就在这个文件里添加路径就可以了。[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值