在flash player 6或以前,利用loadvariables()、loadvariablesnum()、loadvars()、xml.load()等载入外部数据,是不可以跨domain,即在domaina.com的flash不可以载入在domainb.com的数据。但载入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播放会出现警告字句,需要访客决定是否准许载入外部数据∶

图1 访客安全
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)
