跨域传递数值的解决方案

By:不详 Date:2009-06-05

    前几天由于自己的需要,要实现一个功能:客户网站上的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文件

参与讨论去: 艾睿(Airia) 交朋友去:友吧推荐文章去:网站贴吧
企业招聘

北京中视力天文化传媒有限公司

公司简介:北京中视力天文化传媒有限公司,是CCTV.com央视国际网络有限公司投资的互联网研发团队。我们是天使的使者。。。

招聘FlashAS程序员详情点击

Copyright 2007-2008 51AS.com Extended in kingcms 鲁ICP备06001158号