聊聊Session、Cookie、Token、JWT
HTTP是无状态协议,而现实的业务场景中又往往需要保持用户的状态,Session和Cookie就是为解决这个问题而出现的。
什么是Cookie
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,实际上Cookie是服务器在本地机器上存储的一小段文本,并随着每次请求发送到服务器。
Cookie技术通过请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据响应报文里的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie。当下客户端再向服务端发起请求时,客户端会自动在请求报文中加入Cookie值之后发送出去.之后服务端发现客户端发送过来的Cookie后,会检查是那个客户端发送过来的请求,然后对服务器上的记录,最后得到了之前的状态信息。
什么是Session
本来Session 是一个抽象概念,开发者为了实现中断和继续等操作,将user agent和server之间一对一的交互,抽象为"会话",进而衍生出"会话状态",也就是Session的概念。
Session的实现一般通过后端存储加Cookie来实现,常说的Session要比Cookie安全是因为敏感信息都存储在后端只将对应的Session ID通过Cookie交给前端存储。
目前常用的控制客户端状态的方案是Session+Cookie,仅靠Cookie本身也能通过存储用户信息维持交互状态,只是所有信息都存储在客户端一旦被劫持全部信息都会泄露,并且导致大量数据在网络上传输影响性能。Session的实现不一定只能依靠Cookie,比若说Session ID可以保存在url
什么是Token
token也称