首先说下
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中
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
Cookie cookie = new Cookie("JSESSIONID", request.getSession().getId());
response.addCookie(cookie);
假如我们不这样写,tomcat会发给浏览器jsessionid是重新创建的,就会出现session丢失情况,这样写了之后再从https>http就不会有问题了。
上面如有不对, 欢迎批评指正!
分享到:
相关推荐
设置`mode`属性为`StateServer`,并指定`stateConnectionString`,这使得Session数据不在本地存储,而是通过TCP/IP连接到一个独立的State Server服务,从而避免了由于IFrame环境导致的Session丢失问题。 2. **调整...
ASP.NET Session 丢失通常是由多种原因引起的,包括进程重启、Session超时、配置文件更改、应用程序更新或杀毒...通过选择合适的Session存储模式、优化配置以及正确处理对象序列化,可以有效地避免Session丢失问题。
在了解如何解决Session丢失的问题之前,首先需要了解Session的工作原理。Session是一种服务器端技术,用于跟踪用户的交互行为。在用户与网站交互的过程中,服务器会为每个用户提供一个唯一的SessionID,并通过Cookie...
4. **前端处理**:前端需要处理HTTP与HTTPS之间的跳转,确保在跳转过程中不会丢失session信息。这通常涉及到监听location变化和处理重定向。 **四、安全注意事项** 1. **防止Session Hijacking**:使用HttpOnly ...
(5) **跨域问题**:Session通常只在同一个域下有效,如果用户通过链接跳转到其他域,Session会丢失。 (6) **硬件故障**:服务器内存不足或硬盘问题可能影响Session的存储。 **3. 解决方案** (1) **调整Session...
thinkphp开发的一个项目,登录成功后又跳转到登录页面,在提交信息后输出session都是正常的,没有问题,但是页面跳转后,session出现丢失现象,无法正常完成登陆。 通过查找资料,发现原来是bom头的原因。受COOKIE送...
现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不
因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...
然而,在使用JavaScript的`window.location.href`进行页面跳转时,有时会出现Session丢失的问题,这可能导致用户在跳转后无法访问之前存储在Session中的数据。本文将探讨这个问题的原因及解决方案。 首先,我们需要...
标题中的问题涉及到的是PHP在Internet Explorer (IE) 浏览器下,特别是在使用iframe时,出现的Session丢失问题。在描述中提到,当一个登录页面被其他网站通过iframe框架加载时,用户在IE浏览器中无法正常登录,因为...
我们在用C#开发程序的时候经常会遇到Session很不稳定,老是数据丢失。下面就是Session数据丢失的解决办法希望对您有好处。 1、在WEB.CONFIG文件中修改SESSION状态保存模式,如:<sessionState mode=’StateServer’ ...
5. 保持表单数据:当用户在填写表单过程中跳转,Session可以用来暂存已输入的信息,防止数据丢失。 然而,Session也有其局限性和需要注意的地方: 1. 性能问题:大量用户同时在线,Session占用服务器内存资源较大...
在Web Farm环境中,因为用户请求可能被负载均衡器分发到不同的服务器上,如果Session状态存储在单个服务器的内存中(如`InProc`模式),则会导致Session丢失。为了解决这个问题,可以使用`SQL Server`或`State ...
在多台Tomcat服务器上,如果直接使用Nginx做负载均衡,不进行特殊配置,那么每次用户的请求可能会被分配到不同的服务器,这就导致了Session丢失。为了解决这个问题,有以下几种常见的策略: 1. **粘性会话(Sticky ...
- 注意,Session依赖于服务器内存,若服务器重启或Session超时,用户状态将丢失。所以通常设置合理的Session过期时间,如`Session.Timeout = 20;`表示20分钟无操作后Session失效。 3. **结合Cookie和Session**: ...
但在多服务器的集群环境中,如果每个服务器都独立维护Session,用户在不同服务器间的跳转会导致Session丢失。 引入Redis作为Session存储解决方案的原因在于,Redis是一个高性能的键值数据库,支持多种数据结构如...
①response.redirect 这个跳转页面的...需要注意的是跳转后内部空间保存的所有数据信息将会丢失,所以需要用到session。 实例 Example that uses Redirect [C#; ASP.NET] 代码如下: using System; using System.Web.UI