https跳转到http session丢失问题
2015-10-20 17:09
344 查看
首先说下
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代码
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
Cookie cookie = new Cookie("JSESSIONID", request.getSession().getId());
response.addCookie(cookie);
假如我们不这样写,tomcat会发给浏览器jsessionid是重新创建的,就会出现session丢失情况,这样写了之后再从https>http就不会有问题了。
上面如有不对, 欢迎批评指正!
原文地址:http://name327.iteye.com/blog/1591796
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代码
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
Cookie cookie = new Cookie("JSESSIONID", request.getSession().getId());
response.addCookie(cookie);
假如我们不这样写,tomcat会发给浏览器jsessionid是重新创建的,就会出现session丢失情况,这样写了之后再从https>http就不会有问题了。
上面如有不对, 欢迎批评指正!
原文地址:http://name327.iteye.com/blog/1591796
相关文章推荐
- gre网络细节
- Linux网络编程---ICMP洪水攻击
- window.XMLHttpRequest对象详解
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- TCP/IP网络编程 基于Linux编程_3 --优于select的epoll
- TCP/IP网络编程 基于Linux编程_3 --优于select的epoll
- Linux 内核Tcp Socket参数调优
- iOS网络开发之NSURLSession学习<1>
- 跨集群 distcp命令
- VMware NAT Ubuntu 14.04 联网
- Ubuntu 系统用网线连上路由器上网配置
- Linux(Centos6.5)下安装svn服务器,并通过http访问
- Linux 常见网络参数整理
- 问题解决:部分海康网络摄像头无法实现视频流解码与实时预览
- HTTP协议中GET和POST
- HTTP访问控制(CORS)
- Linux TcpDump Wireshark文件导出
- HttpClient基本用法
- Linux服务器上监控网络带宽的18个常用命令
- Android中gravity与layout_gravity的区别 http://www.cnblogs.com/linjiqin/archive/2011/02/20/1959239.html