Cookie技术在HTTP协议中的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengfeng0328/article/details/82936947

我们知道HTTP是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。假设要求登录认证的Web页面本身无法进行状态的管理(不记录已登录的状态),那么每次跳转新页面不是要再次登录,就是要在每次在请求报文中附加参数来管理登录状态。

不可否认,无状态协议当然也有他的优点,由于不必保存状态,自然可减少服务器的CPU和内存资源的损耗;从另一侧面来看,也是因为HTTP协议本身就是非常简单的东西,多以才会被应用在各种场景里。想一想,如果以N年前的计算机技术,让服务器记住每一个客户端状态,那么是多么可怕的事情,负担是多么重。

后来引入了Cookie技术,Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文内一个叫做 Set-Cookie 的首部字段信息,通知客户端保存Cookie。当下次客户端再次向该服务器发送请求时,客户端会自动在请求报文中加入Cookie值。服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

简单过程如下示例图:

1)第1次没有Cookie信息状态下发送请求

2)第2次存在Cookie信息状态后发送请求:

上面示图展示了发生Cookie交互的情景,HTTP请求报文和响应报文的内容如下:

1)请求报文(没有Cookie信息的状态)
GET /reader/ HTTP/1.1
Host: hackr.jp
2)响应报文(服务器端生成Cookie信息)
HTTP/1.1 200 OK
Date: Thu, 12 Jul 2012 05:45:32 GMT
Server: Apache
< Set-Cookie: sid=1342077140226724; path=/; ...... >
Content-Type: text/plain; charset=UTF-8
3)请求报文(自动发送保存着的Cookie信息)
GET /image/ HTTP/1.1
Host: hackr.jp
Cookie: sid=1342077140226724

猜你喜欢

转载自blog.csdn.net/fengfeng0328/article/details/82936947