`

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

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

分享到:
评论

相关推荐

    跨域共享session (实现http跳转https 共享session)

    标题中的“跨域共享session”是指在Web开发中,如何在不同的域名或协议(如HTTP和HTTPS)之间共享用户登录状态。通常,由于浏览器的安全策略,不同源的Web应用程序之间不能共享Cookie,其中包括用于存储session信息...

    Tomcat+redis、session同步

    确保在部署后进行充分的测试,检查`session`在`Tomcat`和`Redis`之间的同步是否正常。同时,使用`Redis`的监控工具(如`Redis Commander`或`Prometheus`)监控`session`的数量、大小和过期情况,以便及时发现和解决...

    Tomcat8 session同步测试,配置好的Tomcat

    标题提到的"Tomcat8 session同步测试"是指在多台Tomcat服务器之间共享用户session状态的技术。这在分布式系统中尤其重要,因为用户在浏览网站时,可能会在不同服务器间跳转,保持session一致性可以提供无缝的用户...

    C#不同域名之间的Session共享

    Session共享的主要目的是在多个网站或应用之间保持用户的登录状态和其他个性化信息,提高用户体验。默认情况下,ASP.NET的Session是基于Cookie的,每个Cookie都有一个特定的域限制,这意味着Session信息不能在不同的...

    session实验

    在HTTP协议无状态的特性下,Session扮演了关键角色,它允许服务器保存和识别不同请求之间的用户信息。 Session的工作原理是:当用户访问网站并登录后,服务器会为该用户创建一个唯一的Session ID,并将其存储在...

    微信小程序用户登录、注册、SESSION同步、交互等

    - **生成SESSION**:用户成功注册或登录后,后台会生成一个SESSION,它包含了用户的登录状态和其他必要信息,用于保持客户端和服务器之间的会话状态。 - **SESSION存储**:SESSION通常存储在服务器端,避免跨域...

    Tomcat8+redis做session同步

    在构建分布式Web应用程序时,确保用户会话在多个服务器之间保持一致是至关重要的。`Tomcat8+Redis`的组合提供了解决方案,利用Redis作为中央缓存来实现`session`同步。`Tomcat8`是Apache软件基金会的开源Java ...

    memcached +tomcat7.52 session同步

    【标题】:在Tomcat 7.52中使用memcached...通过以上步骤,我们可以利用memcached在Tomcat 7.52中实现高效的session同步,提高应用的可扩展性和可用性。在实际生产环境中,这将有助于提升用户体验,降低运维复杂度。

    tomcat7 jedis session 同步

    在IT行业中,尤其是在Web应用程序开发领域,服务器集群和Session同步是关键问题,特别是在高可用性和负载均衡的场景下。本文将深入探讨如何在Tomcat7环境下利用Jedis实现Session的同步,以确保用户会话在多台服务器...

    Apache+Tomcat实现负载均衡及集群(session同步)--五、session同步(3)使用memcache

    在这个场景中,session同步是一个核心问题,因为用户session数据的正确管理和共享是保持应用程序一致性和用户体验的关键。本文将深入探讨如何使用memcache来实现Apache+Tomcat环境下的session同步。 首先,我们来...

    tomcat-session同步所需jar.rar_session集群共享_tomcat session

    "tomcat-session同步所需jar.rar_session集群共享_tomcat session"这个标题表明我们关注的是如何在Tomcat集群环境中实现session的共享。这涉及到多个知识点,包括session的基本概念、session复制、粘滞会话、以及...

    spring session redis分布式session

    然而,传统的HTTP Session在分布式环境中面临着同步难题,因为每个服务器节点都维护独立的Session,导致跨服务器时Session数据不同步。为了解决这个问题,Spring Session提供了一种优雅的解决方案,特别是结合Redis...

    Tomcat之间Session共享

    Session 复制方案的实现主要是通过在 server.xml 配置文件中添加 Cluster 节点和在 web.xml 配置文件中添加 distributable 节点来实现的。Cluster 节点中定义了 Session 复制的方式,包括使用 DeltaManager 来管理 ...

    Tomcat8+Redis Session同步需要的jar

    在Java Web开发中,服务器端会话管理是一个关键部分,特别是在多服务器环境下,为了实现负载均衡,需要确保用户的Session数据能够在不同的服务器之间共享。这里提到的"Tomcat8+Redis Session同步"就是一种解决策略,...

    使用terracotta进行web session 同步

    在分布式Web应用环境中,用户会话(Session)的共享和同步是一个重要的挑战。Terracotta是一款开源软件,它提供了一种高效且可靠的解决方案,允许在集群环境中实现Web Session的共享,从而确保用户在不同服务器间的...

    cookie 和 session 保存的异同

    在集群环境中的共享和管理,Cookie本身是可以在所有服务器之间共享的,因为它们在客户端,但Session由于存储在服务器,所以在多台服务器的集群中,需要有一种机制来同步Session数据。这可以通过以下几种方式实现: ...

    tomcat redis session.rar

    【描述】:“Tomcat集群Nginx使用Redis保证Session同步”这一场景中,通常是因为在多台Tomcat服务器组成的集群中,每个服务器各自维护独立的Session,当用户在集群中的不同服务器之间切换时,可能会导致Session丢失...

    session共享jar包(三个)

    5. **测试验证**:通过多台服务器和不同浏览器进行测试,确保session数据在各个服务器之间正确同步。 通过这样的配置,即使用户在多台服务器之间切换,他们的session信息也能保持一致,从而提供无缝的用户体验。在...

    Spring Session + redis实现session共享

    Spring Session的核心思想是将session数据从传统的JVM内存中移出,存储到一个独立的数据存储系统,如Redis,这样可以实现session在多台服务器之间的共享。 Redis是一个高性能的键值数据库,常用于缓存和消息代理。...

Global site tag (gtag.js) - Google Analytics