[转载]Cookie/Session机制详解

转载的文章

该文章系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。

http://blog.csdn.net/fangaoxin/article/details/6952954/


以下是自己的一些理解。(2018-02-28)

session和cookie,它们都是用于会话跟踪。

HTTP是无状态的协议。但是Web应用请求之间通过是有关联的。使用会话跟踪技术可以完善HTTP的无状态的问题。

cookie是保存在客户端的一个文本片段,其实质就是一个键值对。cookie可以有多个,作为请求的请求头的一部分发送到服务端。由于cookie是保存在客户端的,因此安全性有所欠缺。

而session中的信息是保存在服务器端,因此比cookie安全,当客户端请求一个jsp或者servlet的时候,服务器端会附带一个sessionId给客户端,这样,客户端以后就不用每次发送请求都把账号密码发过去了,只要带上这个sessionId,服务端就能识别这个用户,且通过这个sessionId取出服务器端对应的session。

session对每个用户都是唯一的。关闭浏览器,session就消失了。而且session在服务器端是有存活时间的。另外,客户端可以通过cookie存储sessionId带到服务器端。但是如果,客户端禁用了cookie,也会通过url将sessionId带到服务器。


下面这一段是引用了另一篇文章:深入了解session/cookie机制

客户端到服务端,通过cookie、session、jsessionid三者实现有状态服务的具体流程是什么?

1、客户端第一次请求到服务器连接,这个连接是没有附带任何东西的,没有Cookie,没有JSESSIONID。
2、服务器端接收到请求后,会检查这次请求有没有传过来JSESSIONID或者Cookie,如果没有JSESSIONID和Cookie,则服务器端会创建一个Session,并生成一个与该Session相关联的JSESSIONID返回给客户端,客户端会保存这个JSESSIONID,并生成一个与该JSESSIONID关联的Cookie;
3、第二次请求的时候,会把该Cookie(包含JSESSIONID)一起发送给服务器端,这次服务器发现这个请求有了Cookie,便从中取出JSESSIONID,然后根据这个JSESSIONID找到对应的Session,这样便把Http的无状态连接变成了有状态的连接。
4、但是有时候浏览器(即客户端)会禁用Cookie,我们知道Cookie是通过Http的请求头部的一个cookie字段传过去的,如果禁用,那么便得不到这个值,JSESSIONID便不能通过Cookie传入服务器端,当然我们还有其他的解决办法,url重写和隐藏表单,url重写就是把JSESSIONID附带在url后面传过去。隐藏表单是在表单提交的时候传入一个隐藏字段JSESSIONID。这两种方式都能把JSESSIONID传过去。
5、上述步骤由应用服务器tomcat和浏览器共同完成,其中cookie解析、session创建、jsessionid生成、URL重写等都是由tomcat完成,二次请求时cookie封装jsessionid则由浏览器完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值