文章目录
cookie
首先说区别之前 追溯一下为什么需要cookie session这些鬼东西 我们都知道http协议是一种无状态协议(这次请求和下次请求是没有任何关联的) 这种协议的优点是飞快!但是缺点是两次请求无法关联 也就是我登陆之后下一次操作服务器就不认识我了
那么这时候cookie session用生活场景举例就是 去澡堂洗澡 为了辨别我是谁 给我发了一个手牌 这个手牌即是session 作为唯一标识 关联之后的任何请求
cookie的产生以及保存
web服务器产生,保存在客户端;
(1)浏览器第一次访问服务端时,服务器此时因不知道它身份所以创建的一个独特的身份标识数据,格式为key=value键值对,放入到set-cookie字段里面,随着响应报文一起发送给浏览器
(2)浏览器看到有set-cookie的字段以后就知道这是服务器给的身份标识 于是就保存起来 下次请求时会自动将此key=value值放入到cookie字段中发给服务端 服务端收到请求报文后 发现cookie字段中有值 就能根据此值识别用户的身份然后提供个性化服务
cookie的分类
cookie分为持久化和非持久化
持久化的cookie可以存在于硬盘中 浏览器关闭的话 也不会影响;非持久化的cookie 存在于内存中 如果浏览器关闭的话 cookie也会随之消失
cookie在项目中应用的场景
登陆记住用户名
浏览器记录用户已经浏览过的网页
cookie如何查看(chrome为例)
在登陆进某一网页之后 Fn+F12打开开发者工具按照如下位置查看
note: cookie数据有失效时间看expire值
Session
session的产生以及保存
web服务器 保存在服务器
当用户登录了系统 服务器端的web容器就会创建一个session 此会话中可以保存登录用户的信息 并且也是以键值对的形式去保存的 系统通过session技术来做的鉴权 因为只有当用户登录了才可以访问系统中的页面和数据
session在项目中应用的场景
一般只保存用户的用户名 时长默认是30min 这也是为什么当我们登陆系统一段时间后不使用就需要重新登录 因为30min之后session就已经丢失了
session如何查看(以CSDN为例)
和cookie查看方法一致 注意这里的ASP.NET_SessionId这个名字不是固定的
Token
Token的产生以及保存
web服务器 保存在数据库中
(1)用户第一次登录的时候 服务端会产生一个本地token token会存在于服务器的数据库上 然后将这个token返回给浏览器
(2)客户端收到token之后将token存储在本地上
(3)客户端再次发送请求的时候 会将token发送到服务器上
(4)服务端收到这个token的时候会将token与本地的token进行比较 可以来验证身份
Token在项目中应用的场景
一般用于app项目登录鉴权或者接口鉴权 因为app项目和接口客户端都不是浏览器 因此就没有cookie和session了 所以通过token来鉴权
Token如何查看(以CSDN为例)
有些系统的token直接显示在后面的页面上 而接口的token一般在登录接口的返回值里面
区别总结(文章有点长 心急的直接看这里hh)
总的来说 它们都是web服务器产生的 只是保存在不同的地方 分别是 哭护短 服务器 数据库中 所以它们在项目中应用场景也不一样