18.4.接受其他域的连接请求

问题
我想让Flash接受来自其他域中Flash的本地连接请求
解决办法
在接收端使用allowDomain( )方法
讨论
默认下,接收端只接受来自同一个域的本地连接请求,不过可以使用allowDomain( )方法允许或禁止其他域的连接请求。

在ActionScript 3.0中,LocalConnection实例的allowDomain( )方法需要被显式调用,方法接受一个或多个字符串参数,指明允许的远程域,下面的例子中,我们允许darronschall.com域中的flash发送消息到当前flash中:
+展开
-ActionScript
var receiver:LocalConnection = new LocalConnection( );
receiver.connect( "_exampleChannel" );
// 允许darronschall.com 发送数据到"_exampleChannel"通道
receiver.allowDomain( "darronschall.com" );

可以设置允许多个域:
+展开
-ActionScript
receiver.allowDomain( "macromedia.com""adobe.com""google.com" );

还有两个特殊的字符串可使用,~ 表示所有的域都允许,localhost 表示只有本机的允许。

本地连接的domain属性可以确定所在的域,这个属性是只读的,如果要设置当前域的flash都可以通信,可把该属性值传给allowDomain( )方法:
+展开
-ActionScript
receiver.allowDomain( receiver.domain );
receiver.allowDomain( "darronschall.com", receiver.domain );


上面的代码除了接收本地信息之外还允许接收来自darronschall.com的信息

还有个与allowDomain( )类似的方法allowInsecureDomain( )方法,大多数情况下这两种方法是一样,不同点在于HTTPS的使用上,当flash来自于HTTPS,其里面的本地连接实例不能和来自于HTTP的flash通信,除非使用allowInsecureDomain( ),默认下HTTP 和HTTPS 的flash是不能通信的,即使是在同一个域。

我们并不推荐使用allowInsecureDomain( ),这样可能会带来不安全因素:
+展开
-ActionScript
receiver.allowInsecureDomain( "adobe.com" );

加支付宝好友偷能量挖...


评论(0)网络
阅读(72)喜欢(0)flash/flex/fcs/AIR