ArcGIS API for Flex制作程序发布后出现错误:"访问 URL 时
问题: 前不久利用ArcGIS API for Flex做了一个程序,在Flash Builder中运行时能够正常显示地图,并不报出错误,然后利用IIS发布后进行浏览就出现错误[RPC Fault faultString="访问 URL 时遇到安全性错误" faultCode="Channel.Security.Error" faultDetail="目标:DefaultHTTP"]。 我的地图服务的url是"http://LXP/arcgis/rest/services/大连/MapServer",我发布的web服务的url是"http://localhost/ArcGIStest/ClassBreakRender.html",处于不同的域,如果把web服务的域名更改为LXP就不会出现错误,这让我想到了跨域。但该如何解决呢? 解决方法尝试1: ? 我认为应该是安全沙箱的问题,于是我就将一个crossdomain.xml文件放在了ArcGIS Server的地图服务的服务端文件夹C:Inetpubwwwroot下,仍然出现错误,在网上翻阅了各种各样的解决办法,始终没能解决掉。为方便理解我将下面的解决方法的链接放在下面: 安全沙箱的问题和解决办法汇总http://www.memosite.net/share/267/
Flex Builder中网络监视器导致“访问URL时遇到安全性错误”http://www.cnblogs.com/litou/archive/2011/10/28/2227929.html ?
解决Flex跨域"访问URL时遇到安全性错误?http://wangjianwei866.blog.163.com/blog/static/929582320110844142318/crossdomain.xml文件内容如下:
尝试失败! 解决方法尝试2: 后来我发现我在Flash Builder中调试所用的浏览器和web服务器浏览时所用浏览器不同,而且两者的Flash 版本也存在差异, 调试IE浏览器Adobe Flash Player 10.3.183.7 web服务360极速浏览器(Chrome)Adobe Flash Player 11.0.1.152 当我在调试时并不会出现错误,而进入360极速浏览器就出现错误. 这儿有两种可能,一是浏览器差异导致的错误,另外一个是Adobe Flash Player版本不同导致,为了测试出问题到底出在哪儿, 于是我将web发布后的地址粘贴至IE浏览器中,发现并不会出现错误,我开始怀疑是浏览器的问题了。然后我将IE浏览器重Adobe Flash Player的版本升级至11.0.1.152,与360极速浏览器一致,将地址再次粘贴到IE浏览器中,哈哈问题出现了,终于弹出一个安全沙箱的错误:“安全沙箱冲突:http://localhost/ArcGIStest/ClassBreakRender.swf 不能从 http://LXP/arcgis/rest/services/大连/MapServer?f=json 加载数据。”,这就排除了浏览器的问题了,Adobe Flash Player版本升级至11以上就出现这种问题,难道是11的安全沙箱级别别比10更严格了。后来在高手的指导下修改了策略文件crossdomain.xml的内容,如下: crossdomain.xml更改后内容
这时两者都能访问了,我高兴的把secure="false",果然不能访问了,当我以为我找到了真理的时候,于是把secure="false"恢复过来,再尝试,这下我崩溃了,居然两个都不能进行访问了,在尝试了一次又一次之后还是不行,我以为是内存为清理干净,把这些努力都做了之后仍然不行。
最后我重新建立一个地图服务,不管使用哪个crossdomain.xml都能成功了,迷迷糊糊我也不知道到底是怎么解决了问题的,这次经验让我明白了下面这几点: 1)首先需要建立正确的地图服务; 2)然后解决跨域问题,在地图服务器端放入crossdomain.xml策略文件; 3)我觉得浏览器在清理缓存文件上很让人纠结,有时候更改了内容,显示结果仍然不变,要重新弄几次才能改变。就如360极速浏览器,当我服务器端没有策略文件的时候,有时候能够看到结果,有时候却有看不到,更换地图服务后,不在弹出错误,但图有时候显示,有时候却又不显示了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |