状态保持

  • 因为 http 是一种无状态协议,浏览器请求服务器是无状态的。
  • 无状态:指一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。
  • 无状态原因:浏览器与服务器是使用 socket 套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的 socket 连接,而且服务器也会在处理页面完毕之后销毁页面对象。
  • 有时需要保持下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等
  • 实现状态保持主要有两种方式:
    • 在客户端存储信息使用Cookie
    • 在服务器端存储信息使用Session

无状态协议:

  1. 协议对于事务处理没有记忆能力
  2. 对同一个 url 请求没有上下文关系
  3. 每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况
  4. 服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器
  5. 人生若只如初见

状态举例:

  • 有状态:
    • A:你今天中午吃的啥?
    • B:吃的大盘鸡。
    • A:味道怎么样呀?
    • B:还不错,挺好吃的。
  • 无状态:
    • A:你今天中午吃的啥?
    • B:吃的大盘鸡。
    • A:味道怎么样呀?
    • B:???啊?啥?啥味道怎么样?
  • 所以需要cookie这种东西:
    • A:你今天中午吃的啥?
    • B:吃的大盘鸡。
    • A:你今天中午吃的大盘鸡味道怎么样呀?
    • B:还不错,挺好吃的。