• 【Flex】Flex Builder中网络监视器导致“访问URL时遇到安全性错误”


      Flex中出名难缠的“安全沙箱冲突”问题一直让人抓狂,我还真遇到一次奇怪的“冲突”。

      在一次发布Flex程序到服务器后,刚打开网站并未向服务器请求数据,FlashPlayer日志马上显示错误:

    错误: 请求位于 xmlsocket://localhost:27813 的资源(请求者从 http://192.168.0.100/test/Main.swf发出请求),原因是无法访问服务器
    *** 安全沙箱冲突 ***
    到 localhost:27813 的连接已停止 - 不允许从 http://192.168.0.100/test/Main.swf 进行连接
    

      当向服务器请求数据时,再有报错:

    中文错误
    faultCode:Channel.Security.Error
    faultString:'访问 URL 时遇到安全性错误'
    faultDetail:'目标:DefaultHTTP'
    英文错误
    faultCode:Channel.Security.Error
    faultString:Security error accessing url
    faultDetail:Destination: DefaultHTTP
    

      FlashPlayer日志显示错误:

    警告: 未能 http://localhost:37813/crossdomain.xml 中加载策略文件
    *** 安全沙箱冲突 ***
    到 http://localhost:37813/test/User.ashx?hostport=192.168.0.100&https=N&id=C0D13BEB-D6A2-7178-96D0-448784A3951D 的连接已停止 - 不允许从 http://192.168.0.100/test/Main.swf 进行连接
    

      我顿时纳闷了:

    1.所有Flex和ASP.NET文件都放在http://192.168.0.100/test中,按道理不存在跨域访问的问题,也就是不需要crossdomain.xml策略文件。

    2.第一次打开网站时不可能向服务器请求数据(代码确认),那这个请求从何而来?

    3.数据都在服务器,怎么反而访问本地的localhost的27813或37813端口?

      经过个多星期的反复测试找原因,在一次对比正常项目的文件中,发现项目文件.actionScriptProperties里,compiler段其中一个属性includeNetmonSwc,正常项目该值是false,而有问题项目该值是true!问题似乎找到了,修正该值后重新编译项目,问题解决!

      具体原因参见:《Flash Builder Network Monitor Project Property Causes HTTP Security Error》,意思是曾经打开过Flex Builder的网络监视器,则includeNetmonSwc便自动设置为true。该属性的意思是包含网络监视器的swc类库,当我们发布时,不需要网络监视器的类库,但Flash Builder把类库也加载进来了,于是报错。

      当然还有一个更简单的办法,就是发布前保证网络监视器是禁用状态,也能避免问题的出现。

      希望能帮助遇到类似问题的朋友。

          转载请注明原文地址:http://www.cnblogs.com/litou/archive/2011/10/28/2227929.html 

  • 相关阅读:
    C++设计模式——代理模式
    C++设计模式——享元模式
    C++设计模式——外观模式
    C++设计模式——装饰模式
    C++设计模式——组合模式
    C++设计模式——桥接模式
    C++设计模式——适配器模式
    C++设计模式——原型模式
    云服务器和虚拟主机的区别
    ES6的Module系统
  • 原文地址:https://www.cnblogs.com/litou/p/2227929.html
Copyright © 2020-2023  润新知