一、概述
位于www.mzwu.com域中的SWF文件要访问www.163.com的文件时,SWF首先会检查163服务器目录下是否有crossdomain.xml文件,如果没有,则访问不成功;若crossdomain.xml文件存在,且里边设置了允许www.mzwu.com域访问,那么通信正常。所以要使Flash可以跨域传输数据,其关键就是crossdomain.xml。
二、crossdomain.xml文件格式
crossdomain.xml的格式非常简单,其根节点为<cross-domain-policy>,其下包含一个或多个<allow-access-from>节点,<allow-access-from>有一个属性domain,其值为允许访问的域,可以是确切的IP地址、一个确切的域或一个通配符域(任何域)。下边是两个例子:
程序代码
<?xmlversion="1.0"?>
<cross-domain-policy>
<allow-access-fromdomain="www.friendOfFoo.com"/>
<allow-access-fromdomain="*.foo.com"/>
<allow-access-fromdomain="105.216.0.40"/>
</cross-domain-policy>
<cross-domain-policy>
<allow-access-fromdomain="www.friendOfFoo.com"/>
<allow-access-fromdomain="*.foo.com"/>
<allow-access-fromdomain="105.216.0.40"/>
</cross-domain-policy>
程序代码
<?xmlversion="1.0"?>
<cross-domain-policy>
<allow-access-fromdomain="*"/>
</cross-domain-policy>
<cross-domain-policy>
<allow-access-fromdomain="*"/>
</cross-domain-policy>
第二个例子允许任何域的访问。对于crossdomain.xml文件存放位置,建议将其存放于站点根目录中!
三、示例
1.SWF文件主要Actionscript:
程序代码
on(release){
varmyvar=newLoadVars();
myvar.t=t2.text;
myvar.sendAndLoad(" http://www.163.com/test.asp",myvar,"post");
myvar.onLoad=function(re){
if(re){
t1.text=myvar.t;
}else{
t1.text="fail...";
}
}
}
varmyvar=newLoadVars();
myvar.t=t2.text;
myvar.sendAndLoad(" http://www.163.com/test.asp",myvar,"post");
myvar.onLoad=function(re){
if(re){
t1.text=myvar.t;
}else{
t1.text="fail...";
}
}
}
2.test.asp代码:
程序代码
<% Dimt t=Request.form("t") Response.write("t="&t&"back!") %>