三种会话技术初识
目录
会话控制定义
所谓会话控制 就是 对会话进行控制;
HTTP 是一种无状态的协议,它没有办法区分多次的请求是否来自于同一个客户端;
无法区分用户 而产品中 又大量存在着 这样的需求,所以 我们需要 通过 会话控制 来解决该问题。
常见的 会话控制技术 有三种:
- cookie
- session
- token
cookie
cookie定义
cookie 是 HTTP 服务器 发送到 用户浏览器 并保存在本地的一小块数据。
-
cookie 是保存在 浏览器端 的一小块数据。
-
cookie 是 按照域名 划分保存的。
cookie示例:
cookie特点
浏览器向服务器 发送请求时,会自动将 当前域名下 可用的 cookie 设置在 请求头中,然后传递给服务器。
注:这个 请求头的名字 也叫cookie,所以将 cookie 理解为一个 HTTP 的请求头 也是可以的。
运行示例
session
定义
session 是保存在 服务器端 的一块儿数据 ,保存当前访问用户的相关信息。
作用
实现会话控制,可以识别用户的身份,快速获取当前用户的相关信息。
运行例图
session和 cookie 的区别
cookie 和 session 的区别主要有如下几点
1,存在的位置
cookie:浏览器端。
session:服务端。
2,安全性
cookie 是以明文的方式存放在客户端的,安全性相对较低。
session 存放于服务器中,所以安全性相对较好。
3,网络传输量
cookie 设置内容 过多会增大 报文体积,会影响传输效率。
session 数据存储在服务器,只是通过 cookie 传递 id,所以不影响传输效率。
4,存储限制
浏览器 限制 单个 cookie 保存的数据不能超过 4K ,且单个域名下的存储数量也有限制。
session 数据存储在服务器中,所以没有这些限制。
token
定义
token 是服务端 生成并返回 给 HTTP 客户端的一串加密字符串, token 中保存着 用户信息。本质上就是一串加密字符串。
作用
实现会话控制,服务端可以通过它,来实现识别用户的身份,主要用于移动端 APP。
创建时机
服务端在校验身份通过后,才可以创建。
工作流程
填写参数来校验身份,如账号和密码,校验通过后响应 token,token 一般是在响应体中返回给客户端的。
例图:
注:token中存在用户的信息,服务器校验后可以从中提取所需用户信息。
token特点
-
服务端压力更小(数据存储在客户端)
-
相对更安全(数据加密,可以避免 CSRF(跨站请求伪造))
-
扩展性更强(服务间可以共享,增加服务节点更简单)
与cookie区别
cookie是自动携带的(浏览器自动携带上),而token是手动携带。