我正在使用 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(使用前将#替换为@)