1

我的 Flex 应用程序托管在http://<ip>:8080/MyApp/Login.html,当我去那里时,http://<ip>:8080/crossdomain.xml会创建一个请求,以及一个https://<ip>:8080/crossdomain.xml. 当我尝试对同一服务器使用远程 Java 对象调用并从中获取资产时,就会发生这种情况。我不在端口 8080 上托管 https,因此此 https 调用将失败。

问题是 https 调用有时需要很长时间才能失败(它会因 tomcat 连接器中的 connectionTimeout 长度而失败)。其他时候它很快就会失败。但是,在确实需要很长时间才能失败的情况下,页面不会完成加载,因为我正在等待这些资产并且远程对象调用数据。

我尝试设置对 crossdomain.xml 的强制检索,其中包含以下内容:

<?xml version="1.0"?>
<cross-domain-policy>
    <allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

使用 AS3 代码:

Security.loadPolicyFile(browserUrl+"/assets/crossdomain.xml");

initialize在应用程序的事件中被调用。根据chrome和wireshark正在正确调用和检索上述强大的crossdomain.xml文件,但仍在尝试服务器根目录的默认位置,并且https尝试仍在超时。直到该尝试超时,该应用程序才完成加载。

4

1 回答 1

0

所以我想我确定了这个问题是什么。我在通道列表中首先使用了一个安全通道,并且由于它是不同的域(http 而不是通道所在的 https),它会执行 crossdomain.xml 查找。

我将频道重新排序为首先拥有常规的 http 频道,并且我的应用程序不再执行任何跨域查找,除了强制查找(我已经删除了)。

由于第一个通道是通过 https 的,因此 Flex 在返回到不安全通道之前一直在等待该查找。

我还认为,如果实际使用 https,这应该继续有效,因为我相信对安全连接器的纯文本请求将被立即拒绝而不是超时。

于 2013-07-31T16:32:13.020 回答