Flash/Flex,会涉及到跨域访问URL的安全性问题,最常见的就是出现"访问URL时遇到安全性错误",这也是人们以前常说的安全沙箱问题,解决方案是在目标域名根目录加入跨域策略文件crossdomain.xml,例如:
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*.techmango.com" /> </cross-domain-policy>
这表示目标源允许*.techmango.com下的资源访问该域名下的资源.
问题2:
如果涉及到Socket,跨域策略文件中需要加入to-ports,例如:
<cross-domain-policy> <allow-access-from domain="*" to-ports="507" /> <allow-access-from domain="*.example.com" to-ports="509,516" /> <allow-access-from domain="*.example1.com" to-ports="517-521" /> </cross-domain-policy>
这个策略文件是指定允许哪些域的主机通过那些端口链接.
问题3:
如果在访问Webservice需要用到SOAPHeader验证,跨域策略文件做相应修改,例如:
<cross-domain-policy>
<allow-access-from domain="*.chenfeisoft.com" />
<allow-http-request-headers-from domain="*.techmango.com" headers="*"/>
</cross-domain-policy>
否则会出现DefaultHTTP错误.
问题4:
跨域访问第三方组件提供的数据,如BlazeDS,也会遇到DefaultHTTP错误.这需要服务器及UI端做相应配置,例如:
[Service端]
在服务器端的配置文件中,找到proxy-config.xml文件,里面有一个默认的destination节点: <destination id="DefaultHTTP"> </destination>
默认代理的destination将转向客户端指定的URL进行请求。首先你必须使用dynamic-url属性来指定允许代理的destinations.如下:
把你要访问的URL都配置到dynamic-url节点里。
<destination id="DefaultHTTP">
<properties>
<dynamic-url>http://cnn.com/*</dynamic-url>
<dynamic-url>http://news.yahoo.com/*</dynamic-url>
</properties>
</destination>
修改后,保存。
[UI端]:
为了Flex应用能够访问代理服务,要确保你的应用程序指向正确的service,并设置useProxy 属性为ture.如:
<mx:HTTPService url=”http://cnn.com” useProxy=”true” />
<mx:WebService url=”http://cnn.com/api?wsdl” useProxy=”true” />
编译UI,重新部署。若不能正常读取RSS的信息,检查是否设置了channelSet; channelSet 是HTTPService的属性,一定要设置。一般来讲HTTPService和RemoteObjcet的channelSet是一样的。
=========================================22222
方法:
1.新建一个名为crossdomain.xml的文件
其内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*" to-ports="517-512" />
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
2.将这个文件放入C:\Inetpub\wwwroot目录下,
3.在flex项中的CreationComplete函数中增加一行代码Security.loadPolicyFile("crossdomain.xml的路径");,如下:
protected function onCreationCompleteHandler(event:FlexEvent):void{
Security.loadPolicyFile("http://192.169.1.137:88/crossdomain.xml");
}
From http://wangjianwei866.blog.163.com/blog/static/929582320110844142318/
分享到:
相关推荐
flex 跨域访问文件,安全沙相问题,很有用的,放在iis里就行了
flex 跨域访问问题, flex不在同一个域,解决办法
Flex跨域问题,对于Flash Player 而言,crossdomain.xml文件内容出现了较大的变化,原因是Flash Player 9的security机制有所改变。所以当我用Flex 3调用cross domain的web service时,还使用上面的crossdomain.xml...
提供flex跨域解决的办法 直接在根目录发布这个包就行了
eclipse环境下集成flex之后调用webservice的相关资源
flex跨域上传,需nginx,tomcat host: 127.0.0.1 test1.zwh.com 127.0.0.1 test2.zwh.com nginx: client_max_body_size 2048m; server { listen 80; server_name test2.zwh.com; location / { proxy_set_...
flex获得html容器传递的url参数值
flex 安全机制 以及代码示例全面详细解读进程之间的通讯 客户端与服务器的通讯
来自《潮汕IT男》网站的文章《解决flash/flex/as3 访问中文域名时的流错误》代码示例,地址:http://chenlinsheng.com/?p=990
几乎包含了Flex中所有的错误编码,以及编码错误提示信息。方便Flex程序员快速定位错误地方。
使用 ADOBE FLEX 45访问数据 目录 第 1 章: 访问数据服务概述 Flex 与其它数据访问技术的比较 使用 Flash Builder 访问数据服务 数据访问组件 第 2 章: 使用 Flash Builder 构建以数据为中心的应用程序 创建 Flex...
解压缩后直接运行FlexSecurity.bat。解决flex安全沙箱问题。无需到Adobe的官网上去设置全局安全域。
Flex通过URL获取参数;Flex通过URL获取参数;
Flex_RPC错误大全
flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图...
FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效
Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex ...
Flex问题解决大全, 可学到不少技巧, 仅限科学研究用.
flex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex学习的好资源啊
Flex简介Flex简介Flex简介Flex简介Flex简介