cookie,session与token的区别

  • Post author:
  • Post category:其他


Cookie实际上是一小段的文本信息。 Cookies是由服务器产生的。 当浏览器第一次访问服务端时,服务器此时肯定不知道他的身份,所以创建一个独特的身份标识数据,格式为key=value,放入到Set-Cookie字段里,随着响应报文发给浏览器。浏览器看到有Set-Cookie字段以后就知道这是服务器给的身份标识,于是就保存起来,下次请求时会自动将此key=value值放入到Cookie字段中发给服务端。服务端收到请求报文后,发现Cookie字段中有值,就能根据此值识别用户的身份然后提供数据。

Session机制是一种服务端的机制 ,服务器使用一种类似散列表的结构来保存信息。当程序需要为某个客户端的请求创建一个session的时候 ,服务器首先检查这个客户端里的请求里是否已包含了一个session标识-session ID ,如果已经包含一个session ID ,则说明已经为此客户端创建过session,服务器就按照session ID把这个session检索出来使用。如果客户端请求不包含session lD,则为此客户端创建一个session并且声称一个与此session相关联的session ID ,session ID的值应该是一个既不会重复 ,又不容易被找到规律以仿造的字符串(服务器会自动创建),这个session ID将被在本次响应中返回给客户端保存。

cookie 和session的区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗

考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用cookie。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:

将登陆信息等重要信息存放为session

其他信息如果需要保留,可以放在cookie中

Token是在服务端将用户信息经过Base64Url编码过后传给在客户端,每次用户请求的时候都会带上这一段信息,因此服务端拿到此信息进行解密后就知道此用户是谁了,这个方法叫做JWT(JSON Web Token)。  Token类似一个令牌,无状态的,服务端所需的信息被Base64编码后放到Token中,服务器可以直接解码出其中的数据。

Token相比较于Session的优点在于,当后端系统有多台时,由于是客户端访问时直接带着数据,因此无需做共享数据的操作。

Token的优点

简洁:可以通过URL,POST参数或者是在HTTP头参数发送,因为数据量小,传输速度也很快。

自包含:由于字符串包含了用户所需要的信息,避免了多次查询数据库,因为Token是以JSON的形式保存在客户端的,所以JWT是跨语言的,不需要在服务端保存会话信息,特别适用于分布式微服务。



版权声明:本文为wangyuancode原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。