·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

使用crossdomain.xml让Flash可以跨域传输数据

时间:2011-06-25 16:53CuPlayer
跨域,crossdomain,在本地能够正常访问,当部署到web容器中发布为web服务后,再调用WebServicIE,此时就会被拒绝访问,这就是Flex跨域访问的沙箱问题,为了解决Flex跨域访问WebService的问题,可采用如下方案:首先,跨域访问被拒绝是因为提供服务方没有配置安全策略文件

一、概述

  位于www.89525.com域中的SWF文件要访问www.163.com的文件时,SWF首先会检查163服务器目录下是否有crossdomain.xml文件,如果没有,则访问不成功;若crossdomain.xml文件存在,且里边设置了允许www.8952.com域访问,那么通信正常。所以要使Flash可以跨域传输数据,其关键就是crossdomain.xml。

二、crossdomain.xml文件格式

  crossdomain.xml的格式非常简单,其根节点为<cross-domain-policy> ,其下包含一个或多个<allow-access-from>节点,<allow-access-from>有一个属性domain,其值为允许访问的域,可以是确切的 IP 地址、一个确切的域或一个通配符域(任何域)。下边是两个例子:

  代码:

  1. <?xml version="1.0"?> 
  2. <cross-domain-policy> 
  3.   <allow-access-from domain="www.friendOfFoo.com" /> 
  4.   <allow-access-from domain="*.foo.com" /> 
  5.   <allow-access-from domain="105.216.0.40" /> 
  6. </cross-domain-policy> 

   代码:

  1. <?xml version="1.0"?> 
  2. <cross-domain-policy> 
  3.   <allow-access-from domain="*" /> 
  4. </cross-domain-policy> 
 
  第二个例子允许任何域的访问。对于crossdomain.xml文件存放位置,建议将其存放于站点根目录中!

三、示例

  1.SWF文件主要Actionscrīpt: 
  1. on (release) {  
  2.     var myvar = new LoadVars();  
  3.     myvar.t = t2.text;  
  4.     myvar.sendAndLoad(http://www.89525.com/test.asp",myvar,"post);  
  5.     myvar.onLoad = function(re){  
  6.         if(re){  
  7.             t1.text = myvar.t;  
  8.         }else{  
  9.             t1.text = "fail...";  
  10.         }  
  11.     }  
  2.test.asp代码:
  1. <%  
  2. Dim t  
  3. t = Request.form("t")  
  4. Response.write("t=" & t & " back!")  
  5. %> 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器