Session
定义:
存在服务器用来存放用户数据的类HashTable结构。生命周期:
一般情况下,服务器会在一定时间内(默认30分钟)保存这个 Session,过了时间限制,就会销毁这个Session。Session机制:
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。
工作原理图例:
Cookie
定义:访问网站后在本地存储的相关网站信息,
是服务器再本地机器上存储的文本,并随着每一个请求发送到同一服务器上,是客户端保存状态的一种方式。- 生命周期:表示当前cookie的生命周期为浏览器会话期间,关闭浏览器则cookie消失。
cookie的内容主要包括:名字,值,过期时间,路径和域
。路径与域一起构成cookie的作用范围。Cookie机制:
正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。应用场景:
- 判断用户是否登陆过网站,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。
- “购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入cookie,在最后付款时从cookie中提取这些信息,当然这里面有了安全和性能问题需要我们考虑了。
工作原理图例:
参考链接:
https://blog.csdn.net/duan1078774504/article/details/51912868
二者区别
- cookie数据存放在客户的浏览器上, session数据存放在服务器上。
- cookie不安全,他人可分析存放本地的cookie并进行修改。考虑到安全问题则应选择session。
- session会在一定时间内保存在服务器上,访问增多时,会占用服务器的性能,如考虑减轻服务器性能方面,应选择cookie。
- 单个cookie保存的数据不得超过4K,多数浏览器限制一个站点最多保存20个cookie
session中保存的是对象,cookie中保存的是字符串
形象描述
- Session类似于购物时给客户一个积分卡,商家这边
(服务端)
记录客户持有的会员卡卡号,客户每购买一次东西,只需要报卡号即可获得积分,哪个顾客有多少积分这些信息保存在商家那里(服务端),这也解释了Session安全性比较高的原因 - Cookie类似于商家给顾客
(客户端)
发放优惠券,优惠券上记录了优惠的力度、过期时间等信息,客户拿着优惠券到商家那里购物即可获得相关优惠。