Cookie和Session

Cookie是服务器通过HTTP响应的Set-Cookie字段设置在客户端的本地存储,用于在后续请求中携带信息,常用于标识用户身份。Session是服务器端的存储结构,通过sessionId保存用户会话状态。它们之间的主要区别在于Cookie存储在客户端,而Session存储在服务器,Cookie可存放多种信息,Session专用于身份管理。Cookie和Session常在登录功能中结合使用,但也可独立发挥作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cookie是什么?

Cookie本质上是 浏览器网页提供的 本地存储数据 的机制
网页默认是不允许 访问计算机中的硬盘的(出于安全考虑),但同时我们也需要浏览器在本地能够存储一些信息.
Cookie 浏览器对于访问硬盘做出了明确的限制,相当于浏览器根据域名在本地硬盘上开辟一个Cookie大小的空间,浏览器可以在这个空间中存储信息,cookie通过键值对的方式来组织数据.

cookie从哪里来?

Cookie 是从服务器返回给浏览器的,服务器代码中由程序员决定把什么样的信息保存到客户端,通过HTTP响应的Set-Cookie字段,把键值对写回去就可以了

cookie到哪里去?

Cookie会在后续浏览器访问服务器的时候带到请求的header中,发给服务器,服务器不是只给一个客户端提供服务,同一时刻要处理多个客户端,此时服务器可以通过cookie中的值,来识别当前客户端是谁,当前客户端的服务提供到哪个环节了

 Cookie常见的应用

标识用户的身份信息

 session

getSession(true) 判定当前请求是否已经有对应的会话了(拿着请求中的 cookie里面的sessionId查一下哈希表),如果sessionId不存在,或者没有查到,就创建新的会话,并插入到哈希表中,如果查到了直接返回查到的结果
会话(session),就是一个键值对,key 是 sessionId,value 是一个 HttpSession 对象.每个客户端登录的时候,都会有这样的键值对(会话),服务器用哈希表这样的结果,把这些会话组织起来

getSession构造过程

1.构造一个 HttpSession 对象
2.构造唯一的 sessionId
(服务器自动生成)
3.把这个键值对插入到哈希表中(服务器自动生成)
4.把 sessionId 设置到响应报文 Set-Cookie 字段中(服务器自动生成)

setAttribute(key,value)

HttpSession对象本身也是一个map的结构

 

 Cookie和Session之间的关联

如上图所示,在网站的登录功能中,需要配合使用

Cookie和Session之间的区别

Cookie是 客户端 的存储机制,Session是 服务器 的存储机制

Cookie里面可以存各种键值对(除了身份信息,还可以存别的),Session则专门用来保存用户的身份信息

Cookie可以单独使用,不搭配session(实现非登录的场景下)

session也可以不搭配cookie使用,(手机app登录浏览器,服务器也需要session,此时没有cookie),

cookie属于 HTTP 协议的一部分

session和HTTP无关(TCP,websocket...也可以用session) 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值