Cookie和Session的形象理解

通过实际生活中的银行卡来理解Cookie和Session间的关系:

  • Cookie相当于银行卡
  • Session相当于银行账户

结合到银行存钱和取钱的过程来理解:

存钱过程

1. 兴高采烈地到银行柜台,把要存的钱交给银行工作人员;
2. 银行工作人员把钱存好后,给你一张银行卡。

取钱过程

1. 需要用钱了,找到最近的ATM机,插入银行卡,输入密码;
2. ATM机验证密码正确后,就可以取出钱啦!

类比存钱的过程,client(你)的请求到达server(银行)后,server(银行)新建了一个Session(银行账户),并把Session(银行账户)的ID(银行卡号)放到Cookie(银行卡)中返给了浏览器;

类比取钱的过程,client(你)再次发送请求时,浏览器会自动把Cookie(银行卡)一起发送给server(银行或ATM机),server(银行或ATM机)根据Cookie(银行卡)中的ID(银行卡号)找到Session(银行账户),然后进行其它操作。

我们再来看在天猫网站购物的过程

1. 在浏览器中输入天猫的网址,然后回车(什么,不知道怎么天猫的网址?我不会告诉你,我每次也是百度一下才知道的);
2. 天猫的服务器在接收到请求后,在返回给你网页内容的同时,新建一个session,然后把session的ID放到cookie中返回;
3. 浏览器收到响应后,渲染网页的页面展示商品,同时发现有cookie,就保存一份cookie;
4. 选到自己喜欢的商品后,点击加入购物车,浏览器就会将选择的商品和cookie一起发给天猫的服务器;
5. 天猫的服务器收到你加入购物车的请求后,拿到传过来的cookie中的ID,到session中一查,原来你已经来过了,就直接在session中记录你要购买的商品;
6. 选购完所有的商品后,你想看下自己买全没有,就查看购物车;天猫服务器在接收到查看购物车请求后,根据cookie中的ID,在session中查询到你加到购物车里面的所有商品,返回给你。

为什么要使用Cookie和Session呢

因为HTTP请求是一种无状态协议,就是说,Clinet和Server之间在完成一次请求后,两者之间就没有关系了。当Client再次请求Server时,Server不会识别这个Client。通俗点说就是,Server把每个HTTP请求都当做一次新的请求。如果Server想识别Client,就必须通过Cookie和Session配合来记录数据,比如加入购物车。

最新文章

  1. css3 自定义动画(2)位置的移动
  2. TFS 2013 生成(构建)历史记录保持策略(Retention Policy)
  3. 提供给Android和iOS开发人员的UWP移植向导
  4. 【Java】ServerSocket的学习笔记
  5. Mac下安装及配置Eclipse
  6. 设计模式之代理模式(Proxy)
  7. Delphi操作XML的几个博客
  8. Jquery 控件
  9. [MODx] Solve cannot upload large file
  10. Java模拟POST表单提交HttpClient操作
  11. [CLR via C#]1.2 将托管模块合并成程序集
  12. jsp 页面取值
  13. LNMPA by lin
  14. 【java设计模式】之 模板方法(Template Method)模式
  15. apache、php隐藏http头部版本信息的实现方法
  16. pgsql事务与并发控制
  17. python 修改dataframe的列名
  18. 关于jQuery的一些东西
  19. Tsung 超详细的的tsung性能测试资料
  20. Linux - rar 压缩

热门文章

  1. nodeJS---URL相关模块用法(url和querystring)
  2. 静态分析Android程序
  3. 使用proxy来简单的实现一个观察者
  4. Zephyr的Shell
  5. 如何在Virtual box 下安装Mac os
  6. Java并发——线程中断学习
  7. Luogu P1341 无序字母对
  8. Flutter - TabBar导航栏切换后,状态丢失
  9. NTP服务部署和测试
  10. 轮廓(Outline) 实例