`

session如何在http和https之间同步

    博客分类:
  • java
 
阅读更多

首先说下

 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代码  收藏代码
  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就不会有问题了。

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

分享到:
评论

相关推荐

    tomcat6/7/8 集群部署解决Session同步问题的完美解决方案

    网上很多说是支持的,其实都不行,基本上是各个依赖包之间的版本不兼容或者依赖包不全,我这个包是一个一个依赖下载的,完美同步Seesion,解决老架构下的单Web应用,利用集群支持大并发,补救方案。

    session-storage-sync:在同一来源的浏览器选项卡之间同步本地和会话存储

    会话存储同步跨浏览器选项卡从相同来源同步本地和会话存储。 Typescript友好,无需@types 专为amd模块装载机而打造建造克隆仓库npm install -g打字稿$ TSC 修改module选项以支持所需的任何模块加载器用法该模块将...

    Session Manager-crx插件

    语言:English 一个简单的会话管理器,可在您的PC之间进行同步 使用会话管理器,您可以将标签分组并保存到多个会话中。...此扩展是开源的,可在https://github.com/rjgtav/chrome-session-manager上获得。

    firemelon:一种将WatermelonDB与Firestore同步的简单方法

    西瓜 在WatermelonDB和Firestore之间进行同步的一种简单方法。安装使用npm: $ npm install firemelon使用纱: $ yarn add firemelon兼容性Firemelon可与 firebase 和用法import { syncFireMelon } from 'firemelon'...

    user-session-synchronizer:Wordpress插件允许通过基于已验证的电子邮件同步用户数据和cookie会话来使用户从一个安装登录到另一个安装

    特征同步安装之间的会话通过新注册验证用户电子邮件通过手动管理员操作验证用户电子邮件通过电子邮件验证码验证用户电子邮件防止用户表单更改电子邮件显示历史会话如果用户不存在,则自动添加新订户注销时销毁会话...

    with-iron-session

    特征: (SG),推荐示例(SSR)示例,以备不时之需使用useUser钩子和模块在浏览器窗口/选项卡之间同步登录状态根据用户的登录/注销状态进行的布局会话数据已在Cookie中签名和加密还支持: Express / Connect中间件...

    next-iron-session

    特征: (SG),推荐示例(SSR)示例,以备不时之需使用withUser hook和模块在浏览器窗口/选项卡之间同步登录状态根据用户的登录/注销状态进行的布局会话数据已在Cookie中签名和加密在线演示,为 :eyes:自己部署...

    JaneLee简单购物车源码

    理解系统的关键是搞清GridView、内存数据表与Session对象三者之间的关系。 系统的执行过程是: 进入“主界面”,显示商品分类,以及欢迎界面;在分类数据表(Categories)中任选一种数据类型,同步打开“产品”网页...

    FastDFS_fastdht

    FastDHT是一个基于键值对的高效分布式hash系统, 可以存储文件名和 file_id的映射表 、session数据、用户相关等 ,底层采用erkeley DB做数据库 来持久存储数据 持久存储数据 (也可以使用SSDB),数 据同步方式是使用...

    java面试宝典

    151、在servlets和JSP之间能共享session对象吗? 37 152、如何设置cookie在某一时间后过期? 37 153、如何获得当前的sessions数? 37 154、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 37 155、...

    千方百计笔试题大全

    151、在servlets和JSP之间能共享session对象吗? 37 152、如何设置cookie在某一时间后过期? 37 153、如何获得当前的sessions数? 37 154、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 37 155、...

    进销存系统文档作业例子

    16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...

    精通Hibernate:对象持久化技术第二版part3

    处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...

    超级有影响力霸气的Java面试题大全文档

    19、同步和异步有何异同,在什么情况下分别使用他们?举例说明。  如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,...

    Session Quicksave-crx插件

    所有有趣的“会话保存”扩展似乎都太杂乱了,还是没有在chrome实例之间同步您的会话?然后,此扩展程序适合您!这是一个suuuuper简单扩展,可让您单击两次即可将当前窗口中的选项卡另存为书签!第一:单击chrome工具...

    JAVA面试题最全集

    描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。 5.列出Jsp中包含外部文件的方式,两者有何区别。 6.说明Jsp中errorPage的作用,应用范围。 7.介绍在Jsp中如何使用JavaBeans。 8.简单介绍...

Global site tag (gtag.js) - Google Analytics