我正在使用SWF上传器上传文件.我在服务器端使用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还原会话?
我也经历了这个StackOverFlow的帖子.但是我不明白他们在说什么.也许是因为,我在Java会话中听起来不够.
特别是上一行:upload_url:“ Controller?action = 33& JSESSIONID =<%= request.getSession().getId()%>”.他在那条线上取得了什么成就.什么是Controller&行动= 33.
从客户端或服务器端恢复会话的任何建议都将更有价值!!
谢谢!
解决方法:
如果我正确阅读了链接的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插件,然后将其添加到上传请求中,然后再次发送回服务器,然后用于查找或创建用于处理上传的正确会话ID.
这是作者用来创建新会话cookie的代码:
if (request.getParameter("JSESSIONID")!=null) {
Cookie userCookie = new Cookie("JSESSIONID", request.getParameter("JSESSIONID"));
response.addCookie(userCookie);
}
原文地址:https://codeday.me/bug/20191011/1896467.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。