HTTP中的Cookie

HTTP协议之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字段,于是服务器就会知道用户的一些信息,用来进行个性化和定制化的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值