https://www.cnblogs.com/moyand/p/9047978.html
cookie、session、token存在意义
http协议是无状态协议,请求之间是没有联系的,cookie、session、token可以帮助服务器区分到底是谁在访问
cookie工作原理:
小杨要去一个写字楼, 第一次需要到前台填写登记表格, 登记完成之后前台给了小杨一张通行卡, 这栋大楼内部的安保人员看到通行卡就能确认小杨的身份信息和授权信息.
这里小杨就是客户端, 通行卡就是Cookie,前台就是服务端, 表格就是Session. 客户端第一次访问服务器, 服务器端保存客户的信息并且给客户端一个Cookie, 客户端携带Cookie去访问服务端, 服务端通过携带的Cookie找出该用户信息. 服务端就能够知道是谁访问了.
1.cookie由服务器生成,保存在客户端浏览器。
2.容易被劫持,不安全
session工作原理:
session 从字面上讲,就是会话。这个就类似于你和一个人交谈,你怎么知道当前和你交谈的是张三而不是李四呢?对方肯定有某种特征(长相等)表明他就是张三。
session 也是类似的道理,服务器要知道当前发请求给自己的是谁。为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,服务器就知道这个请求来自于谁了。至于客户端怎么保存这个“身份标识”,可以有很多种方式,对于浏览器客户端,大家都默认采用 cookie 的方式。
服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。
1.session保存在服务端
2.当用户量太大时,占用服务器资源。
3.较安全
token的工作原理:
1.用户通过用户名和密码向服务端发送请求
2.服务端通过验证,生成一个token发送给客户端
3.客户端保存token,发送请求时带上token
4.服务器通过验证,返回数据
token的优势
1.无状态、可扩展
2.支持移动设备
3.跨程序调用
4.安全