cookie、session和token的区别
HTTP 协议是一种无状态协议
,所以一旦HTTP报文交换完成,客户端和服务器端就会谁也不认识谁了,这意味着服务器无法从连接上跟踪会话。即当用户A购买了一件商品并放入购物车中,当再次购买该商品时,服务器已经无法判断是哪个用户的会话了,所以才必须引入一种机制用于跟踪会话。
cookie
cookie相当于通行证
。是一小段文本信息。当客户端请求服务器后,如果服务器需要记录该用户状态,就会使用response回复报文向客户端颁发一个通行证cookie。而客户端收到cookie后会将cookie保存起来,当浏览器再次请求该网页时,浏览器会连同cookie一同交给服务器。服务器检查该cookie,以此辨认用户状态。
session
session相当于客户明细表
,是另一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是session。当客户端浏览器再次访问时只需要从该session中查找客户的状态就可以了。
如果说cookie是通过检查客户身上的通行证
来确定客户身份的话,那session就是通过检查服务器上的客户明细表
来确认客户身份的。session相当于程序在服务器上建立的一份客户档案,客户来访时只需要查询客户档案就可以了。
浏览器客户端保存这个“身份标识”是默认采用 cookie 的方式。
token
token相当于身份证
,是客户端进行请求的一个标识。
当用户第一次登录后,服务器会生成一个token并将此token返回给客户端,以后客户端只需带上这个token请求数据即可,无需再次带上用户名和密码。
token验证相当于直接给服务员看自己的身份证
session和cookie和token的区别
- cookie数据存放在客户端的浏览器上。session数据 放在服务器上。token存在哪儿都行,客户端可存放在localstorage或者cookie,而服务器端则会存放于数据库(服务器端的session是直接放在内存中的)
- cookie比session更不安全,别人可以分析存放在本地的cookie并进行cookie欺骗。
- session会在一定时间内保存在服务器上。当访问增多时,会比较占用服务器的内容,考虑到减轻服务器负担,可以考虑使用cookie
- 单个cookie保存的数据不能超过4K,浏览器都限制一个站点最多保存20个cookie。session没有这种限制。
总结
cookie相当于客户的通行证,只有携带通行证的才能通过。
session相当于服务员的客户明细表,用来记录客户通行证的。
token相当于客户的身份证,用来标识客户身份。
cookie、session和token的区别
1.absolute和relative定位
2.display:table-cell在布局上的应用
3.两列布局css
4.解决GitHub访问不了问题
5.Collection集合和Map集合
6.JDK,JRE和JVM