https跳转到http session丢失问题

http://www.17jquery.com/java/65046/


首先说下

http>https>http

session是不会丢失的。

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

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

内容来自17jquery

一起jquery,17jquery

这时候,如果用户没有访问你的http页面,而是直接通过https访问你的登录页面,这时候就是 内容来自17jquery

https>http

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

以上是问题的描述

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

一起jquery,17jquery

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

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

内容来自17jquery

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

这里就以我的项目为例了。 17jquery.com

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

一起jquery,17jquery

17jquery.com

Java代码
  1. HttpServletRequestrequest=ServletActionContext.getRequest();
  2. HttpServletResponseresponse=ServletActionContext.getResponse();
  3. Cookiecookie=newCookie("JSESSIONID",request.getSession().getId());
  4. response.addCookie(cookie);

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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值