使用crossdomain.xml跨域传输数据
一、概述
位于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 地址、一个确切的域或一个通配符域(任何域)。下边是两个例子:
<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>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
第二个例子允许任何域的访问。对于crossdomain.xml文件存放位置,建议将其存放于站点根目录中!
-->next stone :
crossdomain.xml是放在服务器端的文件,什么叫做放在服务器端,就是放在你要获取的文件的所在的那台机器的那个域名下面。
-->next stone :
http://www.xiaonei.com/crossdomain.xml <!– http://www.xiaonei.com/ –> ? <cross-domain-policy> <allow-access-from domain=”*.xiaonei.com”/> <allow-access-from domain=”xiaonei.com”/> </cross-domain-policy> 这是很标准的做法,我就让我自己的域以及我的子域来获取数据。
淘宝的: http://www.taobao.com/crossdomain.xml <cross-domain-policy><allow-access-from domain=”*.taobao.com”/> <allow-access-from domain=”*.taobao.net”/> <allow-access-from domain=”*.taobaocdn.com”/> <allow-access-from domain=”*.allyes.com”/> </cross-domain-policy> 红色的一行是淘宝的CDN所在的域,所谓内容分发网络。 绿色的一行是淘宝的广告商了,http://www.allyes.com/好耶广告网络,只是不清楚是不是仍然再卖淘宝的广告? 多看几个大网站的crossdomain.xml,也可以知道可能是什么网络广告商给它们在打广告。
比如彭博:http://www.bloomberg.com/crossdomain.xml <cross-domain-policy><allow-access-from domain=”localhost”/> <allow-access-from domain=”10.16.136.107″/> <allow-access-from domain=”*.bloomberg.com”/> <allow-access-from domain=”*.pointroll.com”/> <allow-access-from domain=”*.pointroll.net”/> </cross-domain-policy> 红色的就太不专业了,把内部IP都给暴露了。。。。。。 绿色的是彭博的广告商:PointRoll
路透的: http://www.reuters.com/crossdomain.xml <cross-domain-policy><allow-access-from domain=”*.reuters.com” secure=”false”/> <allow-access-from domain=”ad.doubleclick.net” secure=”false”/> <allow-access-from domain=”ad.uk.doubleclick.net” secure=”false”/> <allow-access-from domain=”m.2mdn.net” secure=”false”/> <allow-access-from domain=”m2.2mdn.net” secure=”false”/> </cross-domain-policy> 广告给了doubleclick来做(绿色) 2mdn.net看不懂是干嘛的,大概是个cdn吧。
滥情的facebook: http://www.facebook.com/crossdomain.xml <?xml version=”1.0″?><!DOCTYPE cross-domain-policy SYSTEM “http://www.adobe.com/xml/dtds/cross-domain-policy.dtd”> <cross-domain-policy> <site-control permitted-cross-domain-policies=”master-only” /> <allow-access-from domain=”s-static.facebook.com” /> <allow-access-from domain=”static.facebook.com” /> <allow-access-from domain=”static.api.ak.facebook.com” /> <allow-access-from domain=”*.static.ak.facebook.com” /> <allow-access-from domain=”s-static.thefacebook.com” /> <allow-access-from domain=”static.thefacebook.com” /> <allow-access-from domain=”static.api.ak.thefacebook.com” /> <allow-access-from domain=”*.static.ak.thefacebook.com” /> <allow-access-from domain=”*.static.ak.fbcdn.com” /> <allow-access-from domain=”external.ak.fbcdn.com” /> <allow-access-from domain=”*.static.ak.fbcdn.net” /> <allow-access-from domain=”external.ak.fbcdn.net” /> <allow-access-from domain=”www.facebook.com” /> <allow-access-from domain=”www.new.facebook.com” /> <allow-access-from domain=”register.facebook.com” /> <allow-access-from domain=”login.facebook.com” /> <allow-access-from domain=”ssl.facebook.com” /> <allow-access-from domain=”secure.facebook.com” /> </cross-domain-policy> 这么多!有子域,有CDN,有thefacebook(facebook的旧域名吧?)
还是google的专业: <?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数据请求。符合要求的文档必须满足:
|
引用:
http://www.mzwu.com/article.asp?id=975
http://www.crossdomainxml.org/
http://hi.baidu.com/lotusxyhf/blog/item/f1c08a58b5771e88810a1870.html