我们都知道http是一种无连接、无状态的协议,意思就是每个http请求都是独立的,服务器并不知道这个请求来源的信息。这就造成了许多不便,比如登录之后服务器也无法获知登录状态,那么如何才能解决这个问题呢?这时就需要用到Cookies和Session了。
我们经常可以在一些大型展览看到有人工寄存处,把东西交给工作人员,工作人员把我们的物品放进柜子并会给我们一个编号,离开的时候凭编号就可以找到我们的物品。寄存处里面的一个一个柜子就相当于Session,而Cookies里存放的就是我们的编号(如图,可以看到我当前的CSDN ARK_ID如下,当然Cookies还存有其他信息,暂不讲解)。跟存包一样,一个Cookie里面的编号就对应一个Session。而Session保存在是服务器开辟的一块空间上,用来存储用户的各种信息。
这样只要浏览器第一次发出请求的时候服务器创建一个Session并把相应的SessionID写入Cookies传给浏览器,以后再发请求的时候浏览器把这个Cookies加入请求头,服务器就可以根据对应的Session知道发出这个请求用户的详细信息了。