微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java-SWF Flash上​​传器会使JSESSIONID无效.从服务器端或客户端还原会话的任何想法?

我正在使用SWF上传上传文件.我在服务器端使用Java.

Flash自动使Java Session无效.到目前为止,SWF团队尚未找到任何修复程序.

经过一些搜索,我找到了这个link,它讨论了在ASP中处理此问题的想法.

In basic PHP we pass the session id as a POST parameter and manually restore the session.

In ASP.Net we also post the session id and use a Global.asax to catch the values
before the session is restored and dynamically add the right cookies.

像那样,我们是否可以选择使用Java还原会话?

我也经历了这个StackOverFlow的帖子.但是我不明白他们在说什么.也许是因为,我在Java会话中听起来不够.

特别是上一行:upload_url:“ Controller?action = 33& JSESSIONID =<%= request.getSession().getId()%>”.他在那条线上取得了什么成就.什么是Controller&行动= 33.

从客户端或服务器端恢复会话的任何建议都将更有价值!!

谢谢!

解决方法:

如果我正确阅读了链接的SO问题,则问题不是会话ID无效,而是服务器对待Flash对象的方式:它被视为附加客户端,而不是浏览器窗口其余部分的一部分.因此,创建了2个单独的会话,导致ID在上传时不同或为null.

解决方案是手动查找正确的会话ID,或强制服务器将正确的ID分配给新会话.这是通过将jsessionid作为变量转发到Flash,然后将其作为GET参数添加到HTTP上传请求中来完成的,因此可以在服务器上检索它,并可以使用它来查找正确的会话.

在该示例中,作者使用Controller作为Servlet的名称,并且action = 33可能被用来在其上调用某些方法.这特定于此特定应用程序,但对您的解决方案并不重要.

对您而言重要的是字符串的结尾:& jsessionid =<%= request.getSession().getId()%>

该JSP代码实质上将Java会话ID添加到包含上传请求URL的变量中.您可以使用普通Java或有权访问正确会话ID的任何其他语言来执行此操作-重要的是首先将其传输到Flash插件,然后将其添加上传请求中,然后再次发送回服务器,然后用于查找或创建用于处理上传的正确会话ID.

这是作者用来创建新会话cookie的代码

if (request.getParameter("JSESSIONID")!=null) { 
    Cookie userCookie = new Cookie("JSESSIONID", request.getParameter("JSESSIONID"));    
    response.addCookie(userCookie); 
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐