在flash player 6或以前,利用loadvariables()、loadvariablesnum()、loadvars()、xml.load()等载入外部数据,是不可以跨domain,即在domaina.com的flash不可以载入在domainb.com的数据(需要通过 middleware作中间人)。但载入sub domain的数据是容许,即放在www.luar.net、luar.net、foo.luar.net的flash都可以载入在此3个不同的sub domain的数据。
flash player 7却带来了坏消息,它收紧了安全政策,载入sub domain的数据是不容许,不过这只对使用了absolute path的flash有影响,例如loadvariablesnum("http://www.domaina.com/data.txt", 0),一般web server都可以设定短网址,例如http://domaina.com,如果flash通过短网址载入,那麽载入外部数据就会受到影响。
flash 6版本的flash,在flash player 7播放会出现警告字句,需要访客决定是否准许载入外部数据∶
flash 7版本的flash,在flash player 7播放就索性没有警告字句,根本载入外部数据的动作已经被否决了。
解决方法,制作一个名叫crossdomain.xml,放在外部数据的server的root,即http://www.domainb.com/crossdomain.xml。xml文件里,有一行∶
<allow-access-from domain="" />
你可以自行加入容许路径,例如∶
<allow-access-from domain="*" />
<allow-access-from domain="luar.net" />
<allow-access-from domain="www.luar.net" />
<allow-access-from domain="*.luar.net" />
通过加入crossdomain.xml,因此也带来一个好消息,flash player 7可以载入跨domain的外部数据!无论是flash 6或7版本的flash,只要在flash player 7播放,domainb.com的server有crossdomain.xml这文件,里面有∶
<allow-access-from domain="*.domaina.com" /> 或
<allow-access-from domain="*" /> 容许任何domain
在domaina.com的flash就可以载入它的数据。
补充
flash mx 2004 professional提供了data binding, web services组件,网络上有不少免费公开的web services,但是因为flash player 7这安全政策,根本得物而无所用,真荒谬!(除非那些web services网站可以加入crossdomain.xml)
原文
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器