Actionscript 3 flash:crossdomain.xml被忽略

Actionscript 3 flash:crossdomain.xml被忽略,actionscript-3,flash,security,apache-flex,cross-domain,Actionscript 3,Flash,Security,Apache Flex,Cross Domain,我有一些,比如说,奇怪的情况。。。这就是它的含义: 在一台服务器上录制音频并上传到另一台服务器上的闪存应用程序。 因此,正如您可能猜到的,我面临安全沙盒冲突异常/错误,似乎我必须将crossdomain.xml添加到服务器的根目录中。好的,是这样的,但它似乎没有被下载,或者下载过程被中断,所以我一直得到这个错误 有人能指出我的错误吗?我真的不明白我做错了什么 以下是我在尝试上载音频时遇到的错误: Error #2044: Unhandled securityError:. text=Error

我有一些,比如说,奇怪的情况。。。这就是它的含义:

在一台服务器上录制音频并上传到另一台服务器上的闪存应用程序。 因此,正如您可能猜到的,我面临安全沙盒冲突异常/错误,似乎我必须将crossdomain.xml添加到服务器的根目录中。好的,是这样的,但它似乎没有被下载,或者下载过程被中断,所以我一直得到这个错误

有人能指出我的错误吗?我真的不明白我做错了什么

以下是我在尝试上载音频时遇到的错误:

Error #2044: Unhandled securityError:. text=Error #2170: Security sandbox 
violation: https://ip1/bar/foo cannot send HTTP headers to https://ip2/foo/bar
以下是my crossdomain.xml(测试版本)的内容:

附加信息第2部分

如果我试图手动访问crossdomain.xml,浏览器中会出现以下警告:

下面是下载crossdomain.xml的请求,结果是http status code=0:

您尝试过Security.allowDomain()吗?

我也遇到过类似的问题。这有点不同,因为我使用了套接字,但我发现flash player使用策略文件的方式有一些变化。你会发现这很有帮助 至少它帮助了我,我写了这篇文章,这就像我的案例的结论一样

看看这一段:

Adobe已向互联网分配号码管理局IANA提交 保留端口843,以便为套接字策略文件提供服务。通过 为套接字策略文件引入一个集中的位置,Flash Player使系统管理员能够定义端口是什么 可通过一个覆盖任何其他策略的主策略使用 主机上的文件。如果Flash Player 9,0124,0无法检索主控 来自端口843的策略文件,然后它在 它试图连接的端口。但是,如果策略文件是 从TCP端口843上的服务可用,然后Flash Player考虑 这将是该系统的权威权限集


在我的项目中,我只是在一个特定的端口中提供crossdomain.xml文件。

最后,我发现了问题所在。当我为InternetExplorer开发这个应用程序时,有一些棘手的事情要让它工作。正如您在这张图片中所看到的:存在“本网站提供的安全证书是针对不同网站的地址颁发的”警告。问题是Internet Explorer在默认情况下总是警告用户这一点,而这正是阻止flash player下载flash策略文件(crossdomain.xml)的问题所在。要覆盖此行为,您只需:

  • 转到Internet Explorer设置:单击齿轮图标->Internet选项
  • 转到高级选项卡
  • 向下滚动到设置列表的末尾,取消选中“警告证书地址不匹配”
  • 重要提示:杀死IE的所有实例(如果有,请检查任务管理器)
  • 完成这些步骤后,flash应该不会在获取crossdomain.xml时出现问题
    真的希望这能帮助其他flex开发人员避免此类问题。干杯

    我也有类似的问题;localhost上的.swf通过远程服务器上的https与REST API连接,远程服务器上有一个跨域文件,但它抛出了2170。对我来说,解决方案是在https上提供包含.swf的localhost.html文件,这就解决了问题。

    您是否尝试过手动加载crossdomain.xml文件?我认为这个方法是loadPolicyFile()。@Reboog711,实际上不是。将尝试使用它并发布结果。我不明白为什么不事先知道IP会阻止您尝试手动加载crossdomain.xml文件。在某些时候,你的应用程序必须知道IP才能上传文件。在尝试上载之前加载策略文件。可能您使用的是自签名SSL证书,或者证书上的主机名与服务器的主机名不匹配。浏览器通常会针对这些情况发出警告。事实上,由于您是通过IP地址访问它,后者可能是正确的。如果自签名证书/主机名不匹配是一个问题,我似乎找不到明确的答案,但它可能因浏览器而异。尝试另一个浏览器,也考虑添加浏览器给你的任何警告(当你直接访问CopyDoun.xml)。您必须手动[并永久]接受证书。每个访问站点的浏览器(带有自签名证书)都必须执行此步骤。它可能开始为您工作的原因是您在课程中接受了它;然后启动一个新的浏览器会话。你最好获得上传服务器的正式证书;除非你有一个非常受控的环境。我有
    Security.allowDomain(“*”)
    在我的代码中,但很抱歉,这段代码与我的问题没有任何共同之处。是的,allowDomain允许在客户端,crossdomain允许在服务器端。我实际上在我的web应用程序中安装了flash web套接字,使套接字在IE中工作,这些web套接字通过xmlsocket:///获取跨域。但在主题问题中,由于资源是通过https:///访问的,所以也必须通过https://获取crossdomain.xml。如有兴趣,请参阅接受答案中主题问题的解决方案。
    <?xml version="1.0"?>
    <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
        <site-control permitted-cross-domain-policies="all"/>
        <allow-access-from domain="*" to-ports="*" />
        <allow-http-request-headers-from domain="*" headers="*" />
    </cross-domain-policy>
    
    Warning: Failed to load policy file from https://192.168.22.103/crossdomain.xml