快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡新京:flash as3.0 跨域的解决办法



Flash跨域问题信托不是所有人都可以碰到,假如你在本地宣布,或者说直接Ctrl+Enter在FlashIDE中预览,是不会碰到跨域问题的,当然,跨域有个条件,那便是Flash不是完全自力的,与外界要做一些通信和交互,假如你的Flash是完全自力的文件,没有和外界发生任何交互和数据通信的话,那么你可以不斟酌跨域问题,由于这也不存在跨域问题。

什么是跨域?

跨域简单的说便是造访其他域名的文件或资本,比如a.com的Flash去造访b.com的资本,那么就会引起跨域的问题,由于a.com和b.com不是同一个域名。

为什么有跨域问题?

着实不仅仅是Flash,Javascript等一些脚本也有跨域的问题,这个主如果自身的安然机制所抉择的,由于跨域造访一些文件或资本有必然的危险性,他跨越了网站自身的范围,对付站外的资本无法审核其安然性,在收集病毒木马日益跋扈獗的本日,跨域限定造访是其安然策略的一个紧张办理手段。

跨域有什么问题?

跨域的问题有很多,最直接的便是所造访的文件被限定了,这样一来,你的Flash就不能正常事情了,所所以让人很头疼的一件工作。

现在的Flash已经不仅仅是作为一个动画了,更多的有了数据交互,以是和外界的通信来作为一个互动性对照强的序言来展现,跨域也是此中必须办理的一个问题。

恩,那大概有人说了,既然有跨域澳门新葡新京的问题,那我把资本都放在同一个域名下不就可以了?恩,切实着实可以这样做,然则无意偶尔候我们也会碰到造访外部资本的环境,而且在一个对照正规的项目中,Flash和Html每每是分开放的,很多公司也是这样,为了便于掩护和治理,以是跨域的问题就轻易呈现。

1、Flash自身澳门新葡新京的安然机制设置:

Flash中,在IDE运行是没有任何安然限定的,然则宣布出去的话,就会有不少限定,Flash有2中宣布要领,一个是仅造访收集,一个是仅造访本地,大年夜家可以在文件-宣布设置-Flash选项卡中看到,留意必须是在Flash文件有效时才会有哦,假如当前编辑的是as文件是木有这个选择菜单的:

这里就已经限定了Flash的安然级别,假如是只造访本地,那么Flash中所有的对Web的造访都将禁止,而只造访收集的话,对本地的文件造访都将禁止,以是大年夜家根据实际的用途来选择,假如你盼望你的Flash放到Web上,那么就选择只造访收集,这样的话你测试就务必放在WebService中测试了,本地运行就会呈现各类问题(假如稀有据通信的话),例如:测试URLhttp://127.0.0.1/123.swf。

2、Action澳门新葡新京Script代码设置:

AS2写法:

复制代码

代码如下:

System.security.allowDomain("*");//针对不合http资本 System.security.allowInsecureDomain("*");//针对必要安然验证的资本,比如https

AS3写法:

复制代码

代码如下:

flash.system.Security.allowDomain("*"); flash.system.Security.allowInsecureDomain("*");

上面便是严格的写法,AS3还好说,大年夜家要留意一下AS2,AS2是木有flash.system这个包的,然则你import flash.system并不会报错,以是假如你把AS3的代码复制进去运澳门新葡新京行虽然统统正常,然则实际是木有任何效果的。必然要留意! 上面的代码便是说容许Flash去造访任何URL资本,假如只想造访特定的URl,就把*改成该URL即可,假如多个URl,就用逗号分隔就可以了,留意allowInsecureDomain是容许造访带验证的URL资本,比如https打头的,假如你造访的只是通俗http的话就不必要了。 3、html的设置:假如你必要和页面的JS通信,那么html里就必须有这样一个参数:

复制代码

代码如下:

参数always表示始终容许脚本造访,假如是never,就表示始终不容许。 4、加载外部资本:假如你要读取一个外部文件,比如swf,picture,mp3等等,那么就必要一个跨域策略文件(crossdomain.xml),这个着实便是一个xml文件,详细内容是:

复制代码

代码如下:

这便是跨域策略文件,allow-access-from domain表示容许造访的URl,假如有多个依次澳门新葡新京添加,假如容许所有就一个 allow-access-from domain = "*"就可以了。 必要阐明一下这个文件该怎么用,假如你的Flash在a.com下,你必要造访b.com的资本,那么把这个xml放在b.com的根目录就可以自动造访了,当然,你也可以造访其他目录的策略文件。

复制代码

代码如下:

flash.system.Security.loadPolicyFile(URL:String);

经由过程这个loadPolicyFile就可以主动去加载一个安然策略文件了,留意上面是AS3的写法,AS2不一样哦,参考上面的写法。 5、各个浏览器的跨域问题:IE就不说了,这个基础没啥问题,包括Flash自己天生的Html就对IE的支持做的很好,这里就说说Chrome和FF的问题: 对付FLash,IE是认object标签的,然则FF和Chrome是认embed标签的,以是这个很紧张,假如在调试的时刻,发明firebug等对象提示"...... is not a Function",我们就要从以下地方查找缘故原由:1、addCallback是否成功注册2、allowScriptAccess是否容许always,默认不容许3、Flash是否完全加载完毕一样平常来说,第三点是我们最轻易碰到的,假如你的Flash没有加载完毕就去调用函数的话,是找不到这个函数的。这里必要留意别的一个差错提示,便是"Error calling method on NPObject",假如呈现这个差错,就要小心了:1、安然策略问题,请参考上面所有的办理规划2、自身函数差错

您可能还会对下面的文章感兴趣: