计算机网络——应用层(二)

Cookie机制

Cookie机制的由来
Cookie机制是用来解决WEB应用程序之间通信无状态问题的。那么什么是无状态呢?简单来讲,就是当你的浏览器访问一个服务器一段时间之后再去访问服务器,这个服务器并不知道现在的你是不是之前那个你,我们称这个状态为无状态。从服务器角度来考虑,服务器知道有人来访问自己,但不知道那个人是谁。之所以会有这个问题的出现,是因为最初的HTTP协议推出的时候并没有考虑到这个问题,因为当时的WEB应用功能并不发达,人们只是简单的想要从某个服务器获取一些所需的信息,像新闻,图片这类的资料。所有对于服务器来说,你要什么我给你什么就可以了,你是谁对我来说并不重要。

但随着WEB应用程序的发展,其功能也在不断地被丰富。而有些功能就对通信机制提出了新的要求,比如某些网站设置了用户管理这个功能,像最开始的亚马逊到后来的淘宝这样的网站,它们开始需要知道你是谁了,因为如果无法确切的知道你是谁的话,那么当你挑选完商品进行付款页面跳转的时候(相当于一个新的HTTP请求),网站就已经忘了你了,这会造成无法解决的混乱。那么如何解决这个问题?人们不想重新更改HTTP协议,所有Cookie机制就应运而生了。

我们都知道,浏览器和服务器之间是通过报文的形式来交流的。我们观察请求报文可以知道请求报文并不包含用户的信息,那么我们是不是可以在报文中加入某个字段用来作为用户的自我介绍呢?是的,Cookie就是那个字段。而这个字段服务器必须也要知道,不然你的浏览器说自己的Cookie是A,他的浏览器也说他的Cookie是A,那服务器还是不能分辨到底谁是谁。那该怎么办呢?解决方法就是让每个用户的Cookie由服务器来设置,服务器规定你的Cookie是A,他的Cookie是B。那么当你报文Cookie字段值为A时,服务器就能准确的分辨出你来了。

如何实现让服务器来设置你的Cookie呢?
通过服务器返回给你的响应报文来实现,服务器也在响应报文中加入了一个字段,这个字段叫做Set-cookie(设置Cookie)。如果你的浏览器发现接收到的响应报文中包含一个set-cookie字段,且这个字段的值是A,那么在之后所有你访问该服务器的请求报文中都会自动加入Cookie字段,且这个字段的值就是A。所以当你拿着带有Cookie值为A的请求报文发送给服务器时,服务器就知道了原来你是A用户。

这样就解决了在不改变HTTP协议的情况下实现让服务器记住用户的问题。之所以叫那个字段为Cookie其实得问当时发明这种机制的人,看他们的喜好,他们想叫啥就叫啥,当时他们想叫这玩意儿为Cookie(小甜点),所以我们也得管这玩意儿叫Cookie。

再多讲点,因为我们每次访问服务器都会加上Cookie,所以浏览器会把服务器给我们Cookie信息存储起来,也就是说,Cookie信息会存在于客户端浏览器中,也就是我们的本地文件夹中。当然,在服务器那边也会存储每个Cookie所对应的用户信息。所以久而久之,当我们访问的网站(服务器)越来越多的时候,我们本地文件夹中Cookie信息也会越来越多,我们就需要定期清理Cookie信息。所以像360在垃圾清洗的时候就会有Cookie清理这个选项。

猜你喜欢

转载自blog.csdn.net/weixin_43379478/article/details/83657424