Cookie和Session的关系

首先给出结论:

Session是存储在cookie中的;

 

1.cookie

(1)什么是cookie?

小饼干,用于数据的临时存储,以便更方便的进行身份验证;

(2)过程原理:

① 浏览器端向服务器端(Tomcat)发送请求  -》

② 服务器根据需要生成cookie对象,并把一些数据(http请求头中的)保存在cookie中 -》

③ 服务器再把cookie放在http响应头中一并发还给浏览器  -》

④ 浏览器接收到服务器响应后,就会提取该cookie并将其保存在浏览器端;

那么,当浏览器在下一次访问"该"服务器的时候,浏览器就会把cookie放在http请求头中一并发还给服务器。服务器就会从请求头中提取该cookie对象,判别cookie中的数据,然后做出一些个性化的响应。

(3)生命周期:

① 默认为:会话结束就失效(关闭浏览器窗口,cookie就消失;<同理:关闭cookie,session就消失,详见下文>);

(4)存储位置:

浏览器端;

这样的cookie被称为:会话cookie

会话cookie 一般保存在内存中,而不是硬盘上。但是,如果设置了有效期,cookie就会被保存在硬盘上(直到到达有效期,cookie就会被浏览器相关的程序给清除掉)

PS:忽然想起来,每当我们卸载一个软件(比如:浏览器)时,它就会提示我们是否清除cookie用户相关信息。不觉明历 !_   !

(5)cookie的缺陷:

① 大小和数量限制
            通常来说每个站点只能保存20个cookie,每个cookie大小是4K以内;这里的站点指的是?我也不知道啊,我猜是网站 site

② 数据安全性
            由于http请求中是以明文的方式传递数据的,所以它是不安全的哦!

2. Session:

(1)什么是Session?

话说Session的历史:它在web开发中是一个非常重要的概念,但是这个概念非常抽象也非常难定义,也是被滥用最多的一个名字之一;Session在不同场合来说,它的含义也不一样,这里主要介绍HTTPSession;HTTPsession就是服务端为客户端创建的一个对象,这个对象用来保存一些用户的数据,这些数据用于服务端和客户端的“状态保存”;什么是状态保存?麻蛋

(2)过程原理:

① 浏览器发送http请求到服务器端 ->

② 服务器端会根据请求需求生成一个Session对象,并且对这个Session赋予一个唯一的编号 -> 

③ 服务器端把需要的数据记录到对应的Session对象中 ->

④ 接着,服务器端做一些逻辑处理,然后把Session对象的唯一编号,放在一个cookie中 ->

⑤ 最后,随着处理逻辑的完成,把响应发还给浏览器端 ->

⑥ 那么,浏览器端就会把这个带有Session ID的cookie保存起来 ->

当下一次浏览器端发送请求到“该”服务器的时候,就会发送这个带有session ID的cookie,服务器拿到这个带有session ID的cookie,就会取出对应的session ID,然后再到服务器中找到对应的session对象(session是存在服务端的);最后,当服务器辨别出这个用户后,就会对用户进行一些个性化的响应;

参考地址:https://blog.csdn.net/springsen/article/details/7833582

3. cookie与session的比较

(1)数据存储:

cookie以明文的方式存储在浏览器端,session存储在服务器端;

(2)安全性:

由于存储位置的原因,也就出现了浏览器端是不够安全的(但是,我们可以通过加密技术解决这个问题),服务器端更为安全;

(3)生命周期:

cookie的生命周期是累计时间的,即:到点就失效;session是以最后一次访问时间为倒计时的开始时间,同时,它还可以直接调用API来使他失效;

(4)使用原则:

cookie的缺陷,每个站点只能保存20个cookie,每个cookie大小4k以内;session是存放服务器端,会占用服务器内存,因此我们建议不要往session中存放过多过大的对象

 

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
CookieCookies)和 Session(会话)是用于在客户端和服务器之间跟踪用户状态和数据的关键概念。它们之间有以下关系: - CookieCookie 是在客户端(通常是浏览器)上存储数据的小型文本文件。服务器通过响应的 Set-Cookie 头部将 Cookie 数据发送给客户端。一旦客户端接收到 Cookie,它会将其存储在本地,并在后续的请求中自动将 Cookie 附加到相应的请求头部中发送给服务器。Cookie 可以包含各种信息,包括会话标识符(session ID)、用户首选项、跟踪数据等。 - SessionSession 是一种在服务器端跟踪用户状态和数据的机制。服务器会为每个用户创建一个唯一的会话标识符(session ID),并将其存储在服务器上。当用户首次访问服务器时,服务器会为该用户创建一个新的会话,并将会话 ID 发送给客户端,通常通过 Cookie 或 URL 参数的方式。客户端在后续的请求中会将会话 ID 作为身份凭证发送给服务器,以便服务器能够识别用户并检索相关的会话数据。 - 关系CookieSession 通常一起使用来实现会话管理。服务器在创建会话时会生成一个唯一的 session ID,并将其存储在 Cookie 中发送给客户端。客户端在后续的请求中会自动将该 Cookie(包含 session ID)附加到请求中发送给服务器。服务器通过解析请求中的 session ID,可以找到对应的会话数据,从而实现用户状态的跟踪和数据的存储。 总结来说,Cookie 存储在客户端,用于保存会话标识符和其他相关数据;Session 存储在服务器端,用于存储和跟踪用户状态和数据。CookieSession 一起协作,实现了跨请求的会话管理功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值