由于HTTP
协议是一个无状态协议,客户端向服务器发请求,服务器返回响应。并且你每次都要输入账号和密码进行登录,对于用户来说非常的麻烦!这种背景下,就产生了 Cookie
cookie 存储在客户端: cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。因此,服务端脚本就可以读、写存储在客户端的cookie的值。
cookie 是不可跨域的: 每个 cookie 都会绑定单一的域名(绑定域名下的子域都是有效的),无法在别的域名下获取使用,同域名不同端口也是允许共享使用的。
Session:会话
不同点:Cookie是以明文的方式存储账号和密码作为键和值,非常的不安全;而Session的键和值是服务器随机生成的,比较安全!
安全性: Session 比 Cookie 安全,Session 是存储在服务器端的,Cookie 是存储在客户端的。
存取值的类型不同:Cookie 只支持存字符串数据,Session 可以存任意数据类型。
有效期不同: Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般有效时间较短,客户端关闭(默认情况下)或者 Session 超时都会失效。
存储大小不同: 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie,但是当访问量过多,会占用过多的服务器资源。
随着互联网的发展,用户群体变得越来越大。如果在同一时间有大量的用户访问服务器,此时服务器就要保存大量的 Session ID (Session 是存储在服务器端的),而且现在的服务器都是用分布式的服务,这样每一台服务器都要有大量的 Session ID!!!然后 JWT (Json Web Token) 诞生了!
header.payload.signature
服务端保存的是算法!!!