当前位置: 首页 > 面试题库 >

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

田文景
2023-03-14
问题内容

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

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

经过一些搜索,我找到了此链接,该链接讨论了在ASP中处理此问题的想法。

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

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

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

我还阅读了这篇帖子。但是我不明白他们在说什么。也许是因为,我在Java会话中听起来不够。

特别是upload_url: "Controller?action=33&JSESSIONID=<%=request.getSession().getId()%>",这条线。他在那条线上取得了什么成就。什么是Controlleraction=33

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

谢谢!


问题答案:

如果我正确阅读了链接的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); 
}


 类似资料:
  • 我读了很多关于JWT的书,以及如何通过JWT创建“无状态”会话。我理解的要点是因为签名 我不明白的是,如果您的用户需要注销,或者您需要在过期之前使会话无效,会发生什么情况? 从技术上讲,您可以指示浏览器从客户端删除它,但您不能确定这是否真的发生了。令牌本身在技术上仍然有效,如果没有遵循您的删除说明,它仍然可以使用。 这种理解正确吗?如果是这样,这难道不是客户端会话管理的一个巨大错误吗?除了让服务器

  • iam使用openam与Tomcat7一起使用,下面的行总是产生异常SSOTokenManager manager=SSOTokenManager.getInstance();SSOToken SSOToken=manager.createssotoken(请求); 无效的会话id AMSSOProvider:09/18/2012 01:18:01:882 PM EEST:Thread[http-

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 我刚刚开始学习Java。我修改了服务器/客户端通信程序的客户端代码,为客户端创建了两个线程,一个是用于接收用户输入的主线程,另一个是用于接收服务器响应的inputThread。我确信服务器已经向客户机发送了响应,但是,在客户机上没有获得响应消息。 这是我的代码。有谁能帮我弄明白吗?谢谢

  • 前面的章节介绍了所有 Redis 的重要功能组件: 数据结构、数据类型、事务、Lua 环境、事件处理、数据库、持久化, 等等, 但是我们还没有对 Redis 服务器本身做任何介绍。 不过, 服务器本身并没有多少需要介绍的新东西, 因为服务器除了维持服务器状态之外, 最重要的就是将前面介绍过的各个功能模块组合起来, 而这些功能模块在前面的章节里已经介绍过了, 所以本章将焦点放在服务器的初始化过程,