HTTP中的Cookie

来源:互联网 发布:初级英语听力软件 编辑:程序博客网 时间:2024/06/10 08:08

HTTP协议之Cookie

  • HTTP协议之Cookie
    • 使用Cookie的原因
    • Cookie的定义
    • 客户端和服务器的Cookie
      • 客户端发送请求报文的Cookie
      • 服务器端响应报文的set-cookie
    • Cookie的通信

使用Cookie的原因

  因为HTTP协议是无连接无状态的协议,这虽然带来了速度上的提升和结构上的简洁,但是有许多应用场景需要进行有状态的连接,比如我在一个网站上登录了,点击一个本站链接,跳转到详情的页面,这时,用户肯定希望保持登录的状态,因此,我们需要引入 Cookie 来为HTTP协议添加状态管理功能。

Cookie的定义

  Cookie是指在HTTP协议下,服务器或脚本可以维护客户端计算机上信息的一种方式。通俗地说,Cookie是一种能够让网站Web服务器把少量数据储存到客户端的硬盘或内存里,或是从客户端的硬盘里读取数据的一种技术。Cookie文件记录了用户的有关信息,如身份识别号码ID、密码、浏览过的网页、停留的时间、用户在Web站点购物的方式或用户访问该站点的次数等,当用户再次链接Web服务器时,浏览器读取Cookie信息并传递给Web站点。

客户端和服务器的Cookie

客户端发送请求报文的Cookie

  如果客户端没有Cookie时,在其请求报文中不会有Cookie字段,若已经有Cookie,再访问对应网站时,浏览器会检索是否有Cookie与此网站对应,若对应,则服务器可读取次Cookie记录的信息。
  请求报文中的Cookie字段只有:

Cookie:status = enable(disable)

  服务器若发现请求报文中没有Cookie字段,则会在response报文中加入 Set-Cookie 字段,格式为:

Set-Cookie:    NAME = VALUE;    expires = DATE;    path = PATH;    domain = www.xxx.com;    Secure;    HttpOnly

  上面的全大写变量为自定义变量,我们需要定义Cookie的名称,并对其赋值,若是多键值对的情况,格式为NAME = KEY1 = VALUE1 & KEY2 = VALUE2;expires为Cookie失效的时间,默认为关闭浏览器后清理;path为服务器定义的Cookie存储路径;domain为网站的域,若www.baidu.com,他的域应该为baidu.com/*,即主页及其次级目录;Secure若出现,意味着仅在https通信时发送Cookie;HttpOnly若出现,意味着只能在HTTP协议中访问Cookie,不能在Javascript中访问Cookie。

Cookie的通信

Cookie通信
  如图所示,这是一个标准的Cookie通信过程。没有Cookie的客户端对服务器发起请求,服务器发现请求报文首部中没有Cookie字段,就在response报文中加入Set-Cookie字段,客户端接收到之后,在本地生成Cookie,并在再次发生http访问时,在request报文中加入Cookie字段,于是服务器就会知道用户的一些信息,用来进行个性化和定制化的操作。

0 0
原创粉丝点击