您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SWF Flash Uploader使JSESSIONID无效。从服务器端或客户端还原会话的任何想法?

SWF Flash Uploader使JSESSIONID无效。从服务器端或客户端还原会话的任何想法?

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

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

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

对您而言重要的是字符串的结尾: &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); 
}
其他 2022/1/1 18:29:10 有498人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶