SWF Flash Uploader 使 JSESSIONID 无效。有想法从服务器端或客户端恢复会话吗?

2023-12-08

我正在使用 SWF Uploader 上传文件。我在服务器端使用java。

Flash 自动使 Java 会话失效。 SWF团队到目前为止还没有找到任何修复方法。

经过一番搜索,我发现了这个link,其中讨论了在 ASP 中处理这个问题的想法。

在基本 PHP 中,我们将会话 ID 作为 POST 参数传递,并手动恢复会话。

在 ASP.Net 中,我们还发布会话 ID 并使用 Global.asax 来捕获值 在会话恢复之前动态添加正确的 cookie。

像这样我们有什么选项可以恢复java中的会话吗?

我也经历过这个堆栈溢出邮政。但我无法理解他们到底在说什么。也许是因为,我在java会话中不够健全。

尤其upload_url: "Controller?action=33&JSESSIONID=<%=request.getSession().getId()%>",这条线。他用这条线实现了什么?什么是Controller & action=33.

任何从客户端或服务器端恢复会话的建议将更加感激!

Thanks!


如果我正确地阅读了链接的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 插件,then添加到上传请求中,then再次发送回服务器,并且then用于查找或创建正确的会话 ID 来处理上传。

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

if (request.getParameter("JSESSIONID")!=null) { 
    Cookie userCookie = new Cookie("JSESSIONID", request.getParameter("JSESSIONID"));    
    response.addCookie(userCookie); 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SWF Flash Uploader 使 JSESSIONID 无效。有想法从服务器端或客户端恢复会话吗? 的相关文章

随机推荐