2.5 使用Cookie的状态管理

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

1.问题的提出

假设要求登录认证的Web页面本身无法进行状态的管理(不记录已登陆的状态),那么每次跳转新的页面就要再次登录。

那么如何解决这个问题呢?

2.问题的解决办法

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

3.HTTP请求和响应报文举例:

(1)请求报文(没有Cookie信息的状态)

            GET /reader/ HTTP/1.1

            Host: hacker.jp

             *首部字段内没有Cookie的相关信息

(2)响应报文(服务器端生成Cookie信息)

          HTTP/1.1 200 OK

          Date: Thu, 12 Jul 2012 07:12:20 GMT

          Sever: Apache

          <Set-Cookie: sid=1342077140226724; path=/ ;expires=Wed,=>10-Oct-12 07:12:20 GMt>

          Content-Type: text/plain; charset=UTF-8

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

          GET /image/ HTTP/1.1

          Host: hacker.jp 

          Cookie: sid=1342077140226724

4.总结

        到这我们之前提的那个问题就解决了,我们从客户端发出登录Web页面的请求,服务器端的响应包报文中包含Set-Cookie信息,然后客户端保存这个Cookie值,然后我们发出浏览该网站其它页面的请求时,请求报文中会自动加上Cookie信息,服务器端接收到该请求时,便调出之前的记录,通俗说就是此时服务器知道发送请求的是刚才登录的那家伙。便解决了每次跳转页面就要重新登录的问题。



 

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值