前几天由于自己的需要,要实现一个功能:客户网站上的FLASH在开始运行时需要先到我的网站上取得一个数值后才能开始播放.
所谓跨域就是2个不同的域名之间进行数据交换.Flash Player7增强了跨域调用的严格性,Flash Player6中www.myDomain.com 和 sun.myDomain.com 是相匹配的,也就说这两个域可以相互调用文件(使用loadVariables, loadVariablesNum, MovieClip.loadVariables, LoadVars.load, ladVars.sendAndLoad,XML.load, XML.sendAndLoad,XMLSocket.connect )
在Flash Player7中这两个域是不能相互调用文件的,不同的域名就更不能了.
大家可以访问2个网址来看看这种效果的实例:
http://www.vdit.com/webdesign/sanxin/
http://vdit.com/webdesign/sanxin/
上边2个网址访问的页面是同一个页面,但是你看到的效果是不一样的.
解决办法是,写一个名字为 crossdomain.xml 的XML文件,放到被调用文件的网站根目录下:
<cross-domain-policy>
<allow-access-from domain="*.foo.com" />
<allow-access-from domain="*.bar.com" />
<allow-access-from domain="www.foo.com" />
<allow-access-from domain="202.117.80.2" />
</cross-domain-policy>
如果使用XMLSocket要把端口号加上
<cross-domain-policy>
<allow-access-from domain="*.foo.com" to-ports="507,516" />
<allow-access-from domain="*.bar.com" to-ports="516-523" />
<allow-access-from domain="www.foo.com" to-ports="507,516-523" />
<allow-access-from domain="202.117.80.2" to-ports="*" />
</cross-domain-policy>
如果安全策略文件放在根目录,文件名字必须为crossdomain.xml,如果不放在根目录,要用System.security.loadPolicyFile("http://www.myothersite.com/assets/policy.xml")这样的方法加载安全策略文件.
另外:Flash Player7允许在Textfield中使用<img>标签跨域加载JPEG图片或者SWF文件
Copyright 2007-2008 51AS.com Extended in kingcms 鲁ICP备06001158号