读刘欣老师<干掉状态: 从session到token>进行总结。
很多年前,浏览器不需要保存用户浏览的记录,一切过程都随心所欲。直到后来一些特殊需求的出现,比如商品购买,浏览器需要记录登录过的用户还有用户浏览过的一些商品。从此浏览器要为每个用户创建一个会话(session)。同时会创建一个sessionId来唯一标识这个session。但是sessionId储存在服务端对服务器来说是个巨大的开销。为了减轻服务器负担, 通过验证token的形式来验证用户。用户登录服务器后,服务器根据该用户的信息使用加密算法创建一个签名,当该用户再次登录的时候将用户数据和签名一起发送给服务器。服务器通过对应的加密算法对用户数据进行加密,然后签名比较,若相同则该用户已经登录过,反之则拒绝登录。
读了该文章后初步了解了服务器验证的过程。其中也发现很多自己之前不知道或者不太了解的知识点,以下就罗列出来。
1.无状态协议:
当用户访问服务器后,服务器不保存此次访问传输的信息。这是一个浏览器一个请求,服务器一个响应的过程。
因为服务器要处理来自浏览器并发的访问,为了提高服务器处理的能力不保存任何状态的信息。
2.session
每次浏览器访问服务器,服务器会为浏览器创建一个session对象(会话对象),一个浏览器独占一个session。
浏览器第一次访问服务器时,服务器创建session, 将sessionId以cookie的形式发送给浏览器。当浏览器再次请求时, 会将sessionId放在请求头中一起发过去, 服务器会通过sessionId在内存中找到之前创建的session对象并拿来使用。
3.cookie
cookie是http的一个扩展, 当服务器响应给浏览器的信息中包含Set-Cookie时, 指示浏览器创建一个cookie来唯一标识浏览器身份信息,直到cookie过期。