深入理解Cookie、Session、Token
Cookie、Session、Token简介
存在的意义
存在即合理,既然合理就有其意义,那么cookie、session、token存在的意义是什么呢?
HTTP 是一种没有状态的协议,就是说浏览器这一步请求并不知道上一步请求所包含的状态数据,也无法从网络连接上面知道访问者的身份。客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下,这难免有些琐碎而且费时费力 。
所以如何把客户端的HTTP请求关联起来就成了关键,cookie、session、token存在的意义就在于此。
Cookie
cookie指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。
cookie由服务器生成,发送给浏览器,浏览器把cookie以kv(key-value)形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。
cookie的缺陷:客户端就能修改数据,不能存放重要数据,当cookie中的数据字段过多就会影响传输效率。
Session
session 从字面上讲,就是会话,目的是为无状态的HTTP提供的持久机制。服务器要知道当前发请求给自己的是谁。为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,服务器就知道这个请求来自于谁了。
session是放在服务器端的,其运作是通过session_id进行的,session_id在第一次被访问的时候就被存放在cookie中,当你下次访问的时候,cookie带着session_id,服务器就知道你访问过哪里,并将session_id和服务器端的session data关联起来,进行数据保存和修改。
session 的缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。
Cookie与Session的区别
1、cookie数据存放在客户端上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面&#x