https跳转到http session丢失问题_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > https跳转到http session丢失问题

https跳转到http session丢失问题

 2013/10/14 21:39:14  mj914  程序员俱乐部  我要评论(0)
  • 摘要:首先说下http>https>httpsession是不会丢失的。这个就是用户登录时候通过http访问了首页,或者页面,然后点击登录按钮,跳转到https协议下,输入完毕用户名密码等信息,登录录成功,在服务端session放入当前登录用户信息.这种跳转方式不会出现session丢失情况。这时候,如果用户没有访问你的http页面,而是直接通过https访问你的登录页面,这时候就是https>http用户输入完用户名密码等信息,登录成功,在服务端session放入当前用户信息
  • 标签:问题 HTTP

?

?

?

?

首先说下

?http>https>http

session是不会丢失的。

?

这个就是用户登录时候通过http访问了首页,或者页面,然后点击登录按钮,跳转到https协议下,输入完毕用户名密码等信息,登录录成功,在服务端session放入当前登录用户信息.

?

这种跳转方式不会出现session丢失情况。

?

?

这时候,如果用户没有访问你的http页面,而是直接通过https访问你的登录页面,这时候就是?

https>http

用户输入完用户名密码等信息,登录成功,在服务端session放入当前用户信息, 再跳转回http的页面, session就丢失了, 说丢失可能不严谨(其实session还在服务端保存,只是tomcat帮我们创建了新的session id导致我们的会话跟踪失效)

?

以上是问题的描述

?

下面说解决办法。 我的项目是ssh架构的, 其他语言或者架构触类旁通即可.

?

解决之前首先我们要明白 服务端跟踪客户端的会话是通过 浏览器每次提交的一个cookie表示 ?这个cookie的key是JSESSIONID,value是session的id,

浏览器请求时候就会带上这个,服务端就可以成功跟踪客户端了。

?

问题的解决原理说清楚了。 现在说说代码怎么写

这里就以我的项目为例了。

用户直接访问https的登录页面,我这里留给客户端的链接是要经过struts的action的。 在action中

?

?

Java代码??收藏代码class="star" src="/Upload/Images/2013101421/40B102E0EF997EA6.png">
  1. HttpServletRequest?request?=?ServletActionContext.getRequest();??
  2. ????????HttpServletResponse?response=ServletActionContext.getResponse();??
  3. ????????Cookie?cookie?=?new?Cookie("JSESSIONID",?request.getSession().getId());??
  4. ????????response.addCookie(cookie);??
?

假如我们不这样写,tomcat会发给浏览器jsessionid是重新创建的,就会出现session丢失情况,这样写了之后再从https>http就不会有问题了。

上面如有不对, 欢迎批评指正!

上一篇: Java设计模式学习--单例模式 下一篇: 没有下一篇了!
发表评论
用户名: 匿名