加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex跨域访问沙箱问题解决方案

发布时间:2020-12-15 04:25:27 所属栏目:百科 来源:网络整理
导读:转:http://developer.51cto.com/art/201007/215246.htm 本文和大家重点讨论一下Flex跨域访问的沙箱问题,当Flex访问WebService服务时,在本地能够正常访问,当部署到web容器中发布为web服务后,再调用WebServicIE,此时就会被拒绝访问,这就是 Flex跨域访问

转:http://developer.51cto.com/art/201007/215246.htm

本文和大家重点讨论一下Flex跨域访问的沙箱问题,当Flex访问WebService服务时,在本地能够正常访问,当部署到web容器中发布为web服务后,再调用WebServicIE,此时就会被拒绝访问,这就是Flex跨域访问的沙箱问题,下面介绍一下解决方案。

Flex跨域访问的沙箱问题

当Flex访问WebService服务时,在本地能够正常访问,当部署到web容器中发布为web服务后,再调用WebServicIE,此时就会被拒绝访问,这就是Flex跨域访问的沙箱问题,为了解决Flex跨域访问WebService的问题,可采用如下方案:

首先,Flex跨域访问被拒绝是因为提供服务方没有配置安全策略文件,即crossdomain.xml,如果你不想用crossdomain.xml就要用到代理,即自己写一个后台读取webservice,然后提供给自己的flex应用,因为在flashplayer中,要Flex跨域必须要有策略文件。考虑到flashplayer升级到9.124之后,加强了安全性,之前的crossdomain.xml的写法发生了变化,以下就是该文件的完整写法:

1、 策略文件写法: 

<?xml version="1.0"?> 
<!-- http://www.aeroflash.org/crossdomain.xml --> 
<cross-domain-policy> 
<allow-access-from domain="www.friendOfAeroflash.org" /> 
<allow-access-from domain="*.aeroflash.org" /> 
<allow-access-from domain="123.321.0.1" /> 
</cross-domain-policy> 


2、 通配策略文件(无限制访问): 

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*"/> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 


3、 Adobe 强烈不推荐的允许所有资源访问的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="all"/> 
    <allow-access-from domain="*" secure="false"/> 
    <allow-http-request-headers-from domain="*" headers="*" secure="false"/> 
</cross-domain-policy>

//Security.allowDomain("*") 

表示该服务允许任何外域来访问。

关于crossdomain.xml的放置目录问题,有如下解决方案,可放置在:

1)如果这个目录是容器的根目录,可以通过以下的url访问crossdomain.xml:

http://localhost:8080/crossdomain.xml。

2)如果crossdomain.xml不是放在根目录下,而是在某个webapp下面,在flex中就需要在初始化的时候应用

Security.loadPolicyFile("http://localhost:8080/xx/crossdomain.xml");

其中xx为webapp的名称

这样,外部Flex跨域访问该服务发布的WebService时,flashplayer首先找的就是crossdomain.xml文件,若安全机制设置为允许访问,则访问成功

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读