当我在本地提出请求时,我没有任何问题维护我的FlexSession;但是,当我从另一台计算机发出请求时,它会为每个请求创建重复的FlexSession。我注意到每个请求的JSESSIONID都不同,这可能会导致欺骗性会话。
但我不知道为什么会这样。我得到的具体错误是:
Channel.Ping.Failed error Detected duplicate HTTP-based FlexSessions, generally due to the remote host disabling session cookies. Session cookies must be enabled to manage the client connection correctly.
我的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="master-only"/>
<allow-access-from domain="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
修改
我们在后端使用spring-flex集成。此外,这发生在多个浏览器中;我们尝试过IE,Firefox和Chrome。
这是Flex代码:
var ro : RemoteObject = new RemoteObject("myDestination");
ro.endpoint = "http://localhost/foo";
ro.source = "com.bar.MyService";
var op : AbstractOperation = ro.getOperation("serviceMethod");
op.addEventListener( FaultEvent.FAULT, ro_faultHandler );
op.addEventListener( ResultEvent.RESULT, ro_resultHandler );
op.send();
答案 0 :(得分:8)
有三篇文章描述了会发生什么。这些文章是由一些在BlazeDS上工作的人编写的,你应该能够在阅读之后解决问题。如果没有,尝试创建一个功能测试再现问题,我会看一看。