如何使用Flex HTTPService从302 HTTP状态响应中获取cookie

时间:2012-05-21 11:08:35

标签: flex cookies adobe session-cookies httpservice

在我的Flex应用程序中,我需要对j_security_check表单进行身份验证(这似乎是一种流行的身份验证方式),在HTTP POST请求中提供j_usernamej_password字段作为参数。我打算用一个简单的HTTPService(我知道的另一个选项是URLLoader,但它提供相同的结果)这样做。发送POST请求后,我等待包含jsessionid SetCookie的回复。但是,我得到一个html页面,只有在我收到jsessionid后才会出现。

以下是HTTP数据包的实际情况:

  1. 我对包含[baseurl]/j_security_checkj_username
  2. j_password的POST请求
  3. 包含jsessionid SetCookie
  4. 的HTTP状态302响应
  5. GET请求(我没有发送!)从我的应用程序[baseurl]/login.jsp只包含与前一个数据包一起收到的jsessionid
  6. 包含html网页的HTTP状态200响应,应在成功登录后在网络浏览器中查看。
  7. 我需要使用jsessionid的值来使用不同的基于SOAP的Web服务作为身份验证方法。但我似乎无法获得它 - Flex HTTPService默默地捕获302响应并发送下一个GET;之后,饼干无处可寻。

    ..但是,cookie肯定会在Flex中缓存,因为它是从任何HTTPService实例提供给该服务器的所有进一步请求!

    我想知道它是否适用于web服务。因此我的问题是:如何在Flex中获取此cookie的值?

1 个答案:

答案 0 :(得分:0)

显然,在收到setCookie HTML标头后,Flex会将其提供给任何后续的HTTP请求 - 无论是HTTPService还是SOAP WebService。我还没有办法获得这个setCookie的价值,但这种情况无论如何都适用于我的情况。

更新:这是Adobe Flex JIRA中已确认的错误:http://bugs.adobe.com/jira/browse/SDK-15049 决议“延期”