HTTP笔记(四)Cookie

来源:互联网 发布:移动终端软件开发技术 编辑:程序博客网 时间:2024/05/25 18:10

HTTP是无状态协议,它不对之前发生过得请求和响应的状态进行保存管理。也就是说,无法根据之前的状态进行本次的请求处理。

Cookie状态管理

Web本身无法进行状态的管理(不会记录已登录的状态),那么每次跳转新页面不是要再次登录,就是要在请求报文中附加参数管理登陆状态。

保留无协议特征,同时又要解决类似的矛盾问题,于是引入了Cookie技术。Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

Cookie会根据从服务器端发送的响应报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再次往服务器发送请求时,客户端会自动在请求报文中加入Cookie值发送过去。

服务器发现客户端发送过来的Cookie后,回去检查究竟从哪个客户端发送过来的链接请求,然后与服务器数据对比,最后得到之前的状态信息。

第一次网络请求

Created with Raphaël 2.1.0客户端客户端服务器服务器1.请求生成Cookie记住向谁发送的在响应中添加Cookie后返回,响应+Cookie保存Cookie

第二次以后

Created with Raphaël 2.1.0客户端客户端服务器服务器请求中添加Cookie后发送检查Cookie响应对应Cookie的客户端数据

1.请求报文如下

GET /index.htm/ HTTP/1.1Host: www.xxx.com

请求的首部字段内并没有Cookiede的相关信息
2.响应报文(服务端生成Cookie信息)

HTTP/1.1 200 OKDate: Thu, 12, 2015 10:10 GMTServer: Apache<Set-Cookie: sid=3124113412312; path=/; expires=Wed,=>10-Oct-15 10:10:10 GMT>Content-Type: text/plain; charset=UTF-8

3.请求报文(自动发送保存着的Cookie信息)

GET /image/ HTTP/1.1Host: www.xxx.comCookie: sid=3124113412312
0 0