实现Flash跨域访问

  Flash Player 7 及以上版本为目标播放器发布的文件,采用完全域匹配规则,而不是超域匹配规则。因此,被访问的文件(即使该文件以 早于 Flash Player 7 的 Flash Player 版本为目标播放器发布)必须显式允许跨域或子域访问;其次,在某一使用安全协议 (HTTPS) 的站点上承载的文件必须显式允许从使用不安全协议(HTTP 或 FTP)的站点承载的文件的访问。
  所以当使用loadMovie进行跨域访问时,需要调用 System.security.allowDomain。如果LocalConnection 接收方是 HTTPS SWF 文件,而发送方不是,则调用 allowInsecureDomain。
  可以使用下面的代码实现跨域访问:System.security.allowDomain("someSite.com");
或 System.security.allowInsecureDomain("someSite.com") ;
这里也支持使用通配符 (*) 。通配符 (*) 值允许在访问文件是任何文件并且可从任何位置(如全局权限)加载时进行跨脚本操作:System.security.allowDomain("*");
或System.security.allowInsecureDomain("*");

  另一种是用 Flash 文档访问另一个域中的数据。Flash Player 会自动试图从该域加载策略文件。如果试图访问数据的 Flash 文档所在的域包括在该策略文件中,则数据将自动成为可访问数据。
策 略文件必须命名为 crossdomain.xml,并且可以驻留在服务器的根目录和其它目录之中,这个服务器提供要被访问的 ActionScript 数据。每个策略文件对于它所驻留的服务器的端口和协议是特定的,只有在通过 HTTP、HTTPS 或 FTP 进行通信的服务器上,策略文件才起作用。
下面的代码是一个策略文件,它允许从 aeroflash.org 上的 Flash 文档访问来自 aeroflash.org、www.friendOfAeroflash.org、*.www.aeroflash.org 和 123.321.0.1 的 Flash 文档:

<?xml version="1.0"?>
<!-- http://www.aeroflash.org/crossdomain.xml -->
<cross-domain-policy>
   <allow-access-from domain="www.friendOfAeroflash.org" />
   <allow-access-from domain="*.aeroflash.org" />
   <allow-access-from domain="123.321.0.1" />
</cross-domain-policy>
  此外,也可以使用通配符允许访问来自任何域的文档:
<?xml version="1.0"?>
<!-- http://www.aeroflash.org/crossdomain.xml -->
<cross-domain-policy>
   <allow-access-from domain="*" />
</cross-domain-policy>

  Flash跨域调用JavsScript,需要在FLASH脚本调用处加上参数:<param name="allowScriptAccess" value="always" />,该参数默认为:sameDomain。

众所周知,flash因为安全的考虑不支持跨域访问
除非你访问的站点有crossdomain.xml(域名根目录下)
但我们不能让没个站点都放一个
因此,就就要介绍一下Server-side proxy method
web脚本代理的方法:
ColdFusion | PHP | ASP | JSP
以上的example必须和flash document放在同一个domain的server中才能正常使用,把sample中的URL换成你自己的URL即可。

官方参考http://www.adobe.com/cn/devnet/flash/articles/fplayer8_security_print.html

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


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