我的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尝试仍然超时。并且该应用程序在该尝试超时之前未完成其加载。
答案 0 :(得分:0)
所以我认为我确定了这个问题。我在通道列表中首先使用了一个安全通道,因为它是不同的域(http而不是通道所在的https),它将执行crossdomain.xml查找。
我重新排序通道以获得常规的http通道,并且我的应用程序不再执行任何跨域查找,除了强有力的查找(我已经删除)。
由于第一个频道已超过https,因此Flex会在退回到不安全频道之前等待该查找。
我还认为如果实际使用https,这应该继续有用,因为我相信对安全连接器的明文请求会立即被拒绝而不是超时。