crossdomain.xml文件作用与原理
一、概述 位于bbs.51cto.com域中的SWF文件要访问www.163.com的文件时,SWF首先会检查163服务器目录下是否有crossdomain.xml文件,如果没有,则访问不成功;若crossdomain.xml文件存在,且里边设置了允许bbs.51cto.com域访问,那么通信正常。所以要使Flash可以跨域传输数据,其关键就是crossdomain.xml。 二、crossdomain.xml文件格式 crossdomain.xml的格式非常简单,其根节点为<cross-domain-policy> ,其下包含一个或多个<allow-access-from>节点,<allow-access-from>有一个属性domain,其值为允许访问的域,可以是确切的 IP 地址、一个确切的域或一个通配符域(任何域)。下边是两个例子: 程序代码 <?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="www.friendOfFoo.com" /> <allow-access-from domain="*.foo.com" /> <allow-access-from domain="105.216.0.40" /> </cross-domain-policy> 程序代码
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy>
第二个例子允许任何域的访问。对于crossdomain.xml文件存放位置,建议将其存放于站点根目录中! 三、示例 1.SWF文件主要Actionscript: 程序代码 on (release) { var myvar = new LoadVars(); 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代码: 程序代码 <% Dim t t = Request.form("t") Response.write("t=" & t & " back!") %> -------------------------------------------------------------------------------------------------------- <?xml version=”1.0″?> <!DOCTYPE cross-domain-policy SYSTEM “http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd”> <cross-domain-policy> <site-control permitted-cross-domain-policies=”by-content-type” /> </cross-domain-policy> 蓝色行的意思是,要符合要求的文件你才能取,不管你是哪来的flash数据请求。符合要求的文档必须满足:
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" /> <allow-http-request-headers-from domain="*" headers="*"/> </cross-domain-policy> 表示该服务允许任何外域来访问。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |