Flex - 对crossdomain.xml的请求尝试在http端口上使用https并超时

时间:2013-07-30 19:20:01

标签: flex tomcat crossdomain.xml

我的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尝试仍然超时。并且该应用程序在该尝试超时之前未完成其加载。

1 个答案:

答案 0 :(得分:0)

所以我认为我确定了这个问题。我在通道列表中首先使用了一个安全通道,因为它是不同的域(http而不是通道所在的https),它将执行crossdomain.xml查找。

我重新排序通道以获得常规的http通道,并且我的应用程序不再执行任何跨域查找,除了强有力的查找(我已经删除)。

由于第一个频道已超过https,因此Flex会在退回到不安全频道之前等待该查找。

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