cookie 和 session 的区别

session:

1、背景和问题:
背景:

http 是一个无状态的协议,短连接(每次请求响应,都会新建连接,及关闭连接
(http 1.1 提供了长连接)

问题:
在这里插入图片描述

2、解决方案:
在这里插入图片描述
登录操作

(1)生成随机的字符串sessionid,保存在tomcat的用户信息数据结构中,session绑定一个用户,一个用户保存多个信息(通行证)
(2)把sessionid放在响应头,头信息的键值对,键是双方约定好的,值就是sessionid的值
(通行证的逻辑:实现方式很多种,相对来说,采取Cookie实现比较简单,tomcat采取cookie实现)
(3)客户端之后的请求,都携带session
(4)服务端接收请求,都验证sessionid(在map中根据通行证号,查询用户,来判断是否登录)

3、面试中回答:

  • session是干嘛的?
    会话,用来保持用户身份,主要解决需要登录的敏感资源访问的问题,工作在服务器内部
  • 如何实现的?
    通过服务器保存session信息
  • 流程(登录操作)
  • session在会话结束(超时,或注销),服务器重启就消失

cookie:

实现:

将用户信息保存在客户端本地(和浏览器相关的本地路径下,保存用户信息到本地文件)
域名绑定用户信息的Cookie,之后访问某个域名时,浏览器自动从本地抓取该域名的Cookie信息
在这里插入图片描述
面试回答:

  • Cookie是保存在客户端本地文件,工作在客户端和服务器之间
  • 使用场景: 多少天免登录
  • 实现原理:登录成功,响应头Set-Cookie,之后每次都自动携带Cookie头
  • Cookie 作用于Request上,Request Header中增加一个 Cookie 头

通过代码种 cookie:

//第一种:
resp.setHeader("Set-cookie","k1=v1");
//第二种:
Cookie cookie = new Cookie("k2","v2");
resp.addCookie(cookie);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值