cookie的一些理解
简单理解:cookie是一种浏览器中的技术。是由网景公司(NetScape)前雇员发明的,首先来讲讲为什么需要cookie这种技术?
cookie的产生还要从http协议讲起。由于http是一种无状态协议(无状态简单理解成,上一次请求的数据,我下一次请求中是获取不到的),那么这时候就需要一种可以进行请求之间数据传递的技术,cookie就这么诞生了!
cookie的存放又分为两种:
1.存放在硬盘中(也就是浏览器的内存)
举个例子,我们在没有登录的状态下在京东网站上将自己喜欢的电脑加入购物车,关闭网页,第二天打开网页,这个购物车中的电脑依然存在。这是为什么呢?原因就是,我们第一次在访问京东网站的时候,京东后台的服务器第一次收到我们的请求,就返回了一个jsessionid=(32位字符串),并且设置了setMaxAge(可以先不作理解)。下一次我们访问京东服务器的时候,这个cookies技术就会自动将cookie自动带在我们请求头中,服务端通过这个jsessionid就可以拿到我们之前存储的数据。
2.存在浏览器的缓存中
当我们在服务端没有设置setMaxAge这个字段的时候,返回的cookies只会存在缓存中,在关闭浏览器之后,就会消失。(setMaxAge > 1 会被保存在内存中,可以在浏览器中查看过期时间。setMaxAge < 0 ,表示只存放在缓存中 setMaxAge = 0 一般不这么用)
总结一下流程:
当我们的客户端第一次向某个服务器发送请求时。服务端:服务器端会生成jssessionid(一条32位的字符串)做为key,以一个HttpSession作为value,然后以Map的形式存储在服务器端的Session列表中。并且,将这个32位的jssesionid包装成cookie放入到响应头中,返回给客户端。
补充概念:
会话:一组请求与响应
对于服务器来说一次会话的生命周期:从第一次被访问生成cookie,到cookie失效算作一个会话
session的失效:默认情况下30分钟后自动失效(时间从最后一次操作seesion开始计算)