cookie、session和token的区别

作用:三者的作用是在浏览器上保存用户的登录态,其实就是实现用户在网页上登录过一次后,一段时间内再次访问不需要重新登录,会实现自动登录的一个效果。

cookie:是客户端用来存放数据的一个容器,大小约为4k,是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再次发送请求时被携带并发送到服务器上。cookie是不可跨域的,每个cookie都会绑定单一的域名,无法在别的域名下获取使用,一级域名和二级域名之间是允许共享使用的。

session:是另一种记录服务器和客户端会话状态的机制。session是基于cookie实现的,session存储在服务器端,session_id会被存储到客户端的cookie中。用户第一次请求服务器的时候,服务器根据用户提供的信息创建对应的session,请求返回时将此session的唯一标识信息session_id返回给浏览器,session_id存在cookie中,同时cookie记录此session_id属于哪个会话。二次访问服务器时,请求会自动判断此域名下是否存在cookie信息,如果存在自动发送给服务端,服务端会自动从cookie中获取session_id,在根据id查找对应session信息,id是加密过的,session_id是连接cookie和session的桥梁。

cookie与session的区别:

1)安全性:session比cookie安全,session是存储在服务器端的,cookie是存储在客户端的。

2)存取值的类型不同:cookie只支持字符串数据,想要设置其他类型的数据,需要将其转换成字符串,session可以存任意数据类型。

3)有效期不同:cookie可以设置为长时间保持,比如我们经常使用默认登录功能。session一般失效时间较短,客户端关闭或session超时都会失效。

4)存储大小不同:cookie单个不能超过4k,session远高于cookie,但访问量过多时会占用服务器资源。

token:token存在客户端,但它是服务端发回来的,每次请求都需要携带token,把token放到HTTP的Header中,基于token的用户认证是一种服务端无状态的认证方式,服务端不用存放token数据,用解析token的计算时间换取session的存储空间,减轻服务器压力,减少频繁查询数据库,token完全由应用管理,避开同源策略。

token和session的区别:

1)session是一种记录服务器和客户端会话状态的机制,使服务端有状态化。而token是令牌,访问资源接口(API时)所需要的认证资源,token使服务器无状态化,不会存储会话信息。

2)session和token并不矛盾,作为身份认证token比session安全性更好,因为每一个请求都有签名,还能防止监听以及重放攻击,而session就必须依赖链路层来确保通讯安全了。

你可能感兴趣的:(服务器,网络,网络协议)