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

标签 java flash session

我正在使用 SWF Uploader 上传文件。我在服务器端使用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中的 session 吗?

我也经历过这个StackOverFlow邮政。但我无法理解他们到底在说什么。也许是因为,我的java session 不够健全。

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

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

谢谢!

最佳答案

如果我正确地阅读了链接的SO问题,问题不是 session ID的失效,而是服务器处理flash对象的方式:它被认为是一个额外的客户端,而不是浏览器窗口其余部分的一部分。因此,会创建 2 个单独的 session ,导致上传时 id 不同或为 null。

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

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

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

这段 JSP 代码本质上是将 java session id 添加到包含上传请求 URL 的变量中。您可以使用纯 Java 或任何其他能够访问正确 session ID 的语言来执行此操作 - 重要的是它首先传输到 Flash 插件,然后添加到上传请求中,然后再次发送回服务器,然后然后用于查找或创建正确的 session ID 来处理上传。

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

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

关于java - SWF Flash Uploader 使 JSESSIONID 无效。有想法从服务器端或客户端恢复 session 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697162/

相关文章:

c# - 在共享同一 session 时处理另一个 Web 应用程序时 Web 应用程序被阻止

java - 如何通过 ID 手动杀死特定的 HttpSession

java - 如何在 Maven 中使用带有通配符的 CXF wsdl 客户端生成?

Java处理大量数据

php - 将GET变量从Flash传递给带有中文字符的PHP

ios - Actionscript 3.0 > iOS 上的本地加密商店

java - 如何在 Java 中获取 BigDecimal 的整数和小数部分

java - Android 空指针异常 ListFragment

javascript - 使用 flash 或 javascript 读取本地文本文件?

PHP: session 在 header 重定向之前不保存