flash请求http的限制问题

本文介绍了Flash中如何解决跨域数据加载的问题,并提供了crossdomain.xml文件的配置示例。

在Flash中导入外部数据,是flash编程常用的方法,利用这种方法结合后台程序可以完成很多强大的功能,但是出于安全上的考虑,这中间也有一些限制。
现在越来越多服务都开放了api供其他程序调用,但是由于这些限制的存在,往往使得flash开发者非常沮丧。。。

最大的限制是禁止跨域读取,这一点和Ajax类似,在默认情况下,域名A上的swf程序,是无法读取域名B上的文件或后台程序的。但和Ajax不同的是,flash并不是绝对禁止,如果要让域名A的程序访问域名B的内容,只要在域名B上放置一个xml的文件,通常命名为crossdomain.xml,在文件中声明允许域名A的访问,域名A上的flash程序访问域名B之前,调用System.security.loadPolicyFile()读取这个文件(细节请参考flash帮助),之后就可以访问了。
另外,在本地硬盘上运行的swf程序,只要在全局安全性设置面板中设置永远允许就可以访问任意网站的内容。
还有一种方法就是利用后台程序作为proxy,域名A的swf先调用域名A上的后台proxy程序,后台proxy再调用域名B的程序,最后把结果返回给swf。

 

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文件存放位置,建议将其存放于站点根目录中!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值