`
name327
  • 浏览: 165216 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

https跳转到http session丢失问题

阅读更多

首先说下

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

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

分享到:
评论
4 楼 name327 2014-06-04  
小不点pom 写道
还是有问题

有什么问题啊
3 楼 小不点pom 2014-05-30  
还是有问题
2 楼 shikeying 2014-03-14  
嗯,不错,这个方法可以,在重定向时写入cookie,我用springsecurity可以了。不过还是不太理解,https响应写入的cookie在http时不是不能用么?
1 楼 gaowei52306 2013-02-02  
你好,我看了你相关的帖子,请问你说的https跳转到http是在后台处理完登录之后,再重定向到http的吗?

还有一个问题就是,你的那段Java代码需要加在哪里比较合适。貌似我添加了没有生效。我们项目没有使用struts。

麻烦有时间解答下我的疑问,谢谢!

相关推荐

    IFrame中Session丢失的解决办法

    设置`mode`属性为`StateServer`,并指定`stateConnectionString`,这使得Session数据不在本地存储,而是通过TCP/IP连接到一个独立的State Server服务,从而避免了由于IFrame环境导致的Session丢失问题。 2. **调整...

    Session丢失原因和解决方案

    ASP.NET Session 丢失通常是由多种原因引起的,包括进程重启、Session超时、配置文件更改、应用程序更新或杀毒...通过选择合适的Session存储模式、优化配置以及正确处理对象序列化,可以有效地避免Session丢失问题。

    session丢失解决方法

    在了解如何解决Session丢失的问题之前,首先需要了解Session的工作原理。Session是一种服务器端技术,用于跟踪用户的交互行为。在用户与网站交互的过程中,服务器会为每个用户提供一个唯一的SessionID,并通过Cookie...

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

    4. **前端处理**:前端需要处理HTTP与HTTPS之间的跳转,确保在跳转过程中不会丢失session信息。这通常涉及到监听location变化和处理重定向。 **四、安全注意事项** 1. **防止Session Hijacking**:使用HttpOnly ...

    Session丢失

    (5) **跨域问题**:Session通常只在同一个域下有效,如果用户通过链接跳转到其他域,Session会丢失。 (6) **硬件故障**:服务器内存不足或硬盘问题可能影响Session的存储。 **3. 解决方案** (1) **调整Session...

    php页面跳转session cookie丢失导致不能登录等问题的解决方法

    thinkphp开发的一个项目,登录成功后又跳转到登录页面,在提交信息后输出session都是正常的,没有问题,但是页面跳转后,session出现丢失现象,无法正常完成登陆。 通过查找资料,发现原来是bom头的原因。受COOKIE送...

    完美解决ajax访问遇到Session失效的问题

    现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不

    微信小程序实现Session功能及无法获取session问题的解决方法

    因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...

    解决[removed].href之后session丢失的问题

    然而,在使用JavaScript的`window.location.href`进行页面跳转时,有时会出现Session丢失的问题,这可能导致用户在跳转后无法访问之前存储在Session中的数据。本文将探讨这个问题的原因及解决方案。 首先,我们需要...

    PHP关于IE下的iframe跨域导致session丢失问题解决方法

    标题中的问题涉及到的是PHP在Internet Explorer (IE) 浏览器下,特别是在使用iframe时,出现的Session丢失问题。在描述中提到,当一个登录页面被其他网站通过iframe框架加载时,用户在IE浏览器中无法正常登录,因为...

    C# SESSION丢失问题的解决办法

    我们在用C#开发程序的时候经常会遇到Session很不稳定,老是数据丢失。下面就是Session数据丢失的解决办法希望对您有好处。 1、在WEB.CONFIG文件中修改SESSION状态保存模式,如:<sessionState mode=’StateServer’ ...

    session session session szsessdifn

    5. 保持表单数据:当用户在填写表单过程中跳转,Session可以用来暂存已输入的信息,防止数据丢失。 然而,Session也有其局限性和需要注意的地方: 1. 性能问题:大量用户同时在线,Session占用服务器内存资源较大...

    在asp.net中使用session常见问题集锦

    在Web Farm环境中,因为用户请求可能被负载均衡器分发到不同的服务器上,如果Session状态存储在单个服务器的内存中(如`InProc`模式),则会导致Session丢失。为了解决这个问题,可以使用`SQL Server`或`State ...

    解决session不同问题所需jar包

    在多台Tomcat服务器上,如果直接使用Nginx做负载均衡,不进行特殊配置,那么每次用户的请求可能会被分配到不同的服务器,这就导致了Session丢失。为了解决这个问题,有以下几种常见的策略: 1. **粘性会话(Sticky ...

    c#实现cookie和session的登陆实例

    - 注意,Session依赖于服务器内存,若服务器重启或Session超时,用户状态将丢失。所以通常设置合理的Session过期时间,如`Session.Timeout = 20;`表示20分钟无操作后Session失效。 3. **结合Cookie和Session**: ...

    session共享方案(tomcat8+redis共享session)

    但在多服务器的集群环境中,如果每个服务器都独立维护Session,用户在不同服务器间的跳转会导致Session丢失。 引入Redis作为Session存储解决方案的原因在于,Redis是一个高性能的键值数据库,支持多种数据结构如...

    asp.net(c#)网页跳转七种方法小结

    ①response.redirect 这个跳转页面的...需要注意的是跳转后内部空间保存的所有数据信息将会丢失,所以需要用到session。 实例 Example that uses Redirect [C#; ASP.NET] 代码如下: using System; using System.Web.UI

Global site tag (gtag.js) - Google Analytics