Session和Cookie(面试必备)

彻底了解Session和Cookie

一、背景

  • http是一个无状态的协议,短链接(每次请求响应,都会建立新链接,及关闭连接)

二、为什么使用Session和Cookie

  • web程序是使用HTTP协议传输的,而HTTP协议是无状态的协议,对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

http1.1提供了长链接

1、引发出来的问题

http请求

2、解决方案:

2.1、使用会话Session来解决

会话:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话
使用session解决

Session的工作原理图

session工作原理
登录操作:

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

面试中怎么回答Session

session是什么*
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息
session保存在哪
通过服务器来保存session信息
seesion的生命周期
根据需求设定,一般来说,半小时。举个例子,你登录一个服务器,服务器返回给你一个sessionID,登录成功之后的半小时之内没有对该服务器进行任何HTTP请求,半小时后你进行一次HTTP请求,会提示你重新登录。
session工作流程
简单的说,当你登陆一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登陆或具有某种权限。由于数据是存储在服务器上面,所以你不能伪造。
session在会话结束(超时,或注销)服务重启就消失

2.2、Cookie

使用场景:实现多少天免登录
实现:将用户信息保存在客户端本地(和浏览器相关的本地路径下,保存用户信息到本地文件)域名绑定用户信息的Cookie,之后访问每个域名时,浏览器自动从本地抓取该域名的Cookie信息
用户登录,校验通过时,响应头携带Set-Cookie,告诉客户端,让浏览器自动设置Cookie到本地之后每次请求,浏览器自动携带Cookie头

Cookie的工作原理图

cookie工作流程

面试怎么回答Cookie

Cookie是什么
Cookie,有时也用其复数形式Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
Cookie保存在哪
保存在客户端浏览器中(本地文件)
Cookie实现流程
登陆成功,响应头Set-Cookie,之后每次都自动携带Cookie头
第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了
Cookie的生命周期
Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

放在最后也是最重要的

Cookie与Session的区别与联系

cookie和session共同之处
cookie和session都是用来跟踪浏览器用户身份的会话方式。
cookie和session的区别
面试常考
①Cookie可以存储在浏览器或者本地,Session只能存在服务器
②session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象
③Session比Cookie更具有安全性(Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击)
④Session占用服务器性能,Session过多,增加服务器压力
⑤单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie,Session是没有大小限制和服务器的内存大小有关。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值