会话机制——session和cookie
只是想记录一下现阶段对会话的理解,有很多地方的理解可能不对,用词也不准确,望多多包涵。
往往一个功能的出现是为了解决一个问题,而会话机制的出现是为了解决http协议的无状态。
会话是什么?其实可以有很多个解释,总之是一系列有始有终的行为的集合。这些行为是有联系的。会话机制就是通过cookie和session将这些行为联系起来。我们学习会话机制,就是学习浏览器和服务器如何通过cookie和session来将用户的会话期间的行为联系起来。
cookie是一种在客户端记录用户信息的技术,cookie技术是http协议里面的一个扩展内容,http请求头里附带set—cookie的信息时,服务器就会生成一个cookie并且把这个cookie保存在客户端中,一般是先保存在内存中。在整个会话过程,cookie将用户在客户端的请求联系起来,比如用户登录软件了,cookie会被服务器修改,再返回,下次用户发送一次请求,将这个cookie一起发过来,那上一次登录操作和这次请求就联系起来了。
session是一种在服务端记录用户信息的技术,一般session用来在服务器端共享数据。当用户发送请求时,程序需要为客户端的请求创建一个session的时候,服务器首先会检查这个客户端请求是否已经包含了一个session标识、称为sessionid,如果已经包含了一个sessionid则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用,如果客户端请求不包含session id,则服务器为此客户端创建一个session并且生成一个与此session相关联的session id,sessionid 的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionid将在本次响应中返回到客户端保存,保存这个sessionid的方式就可以是cookie,这样在交互的过程中,浏览器可以自动的按照规则把这个标识发回给服务器,服务器根据这个sessionid就可以找得到对应的session。
总结来说:sessionid是服务端的用户信息的一个标识,为了使用户发送请求时,服务器端不单单能够根据cookie区别不同的用户,还能通过sessionid找到用户的session,使用该session继续记录用户的信息。
可以这样理解,cookie和session的出现使浏览器端和服务器端都保存有用户的信息,方便服务器和浏览器给用户专属的服务,大大提升了用户体验。