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配合来记录数据,比如加入购物车。

形象地理解Cookie和Session的更多相关文章

  1. 转:理解Cookie和Session机制

    原文: 理解Cookie和Session机制 摘要: Cookie工作原理 由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份.怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论 ...

  2. 理解Cookie和Session机制

    转载: 理解Cookie和Session机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录 ...

  3. 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token

    为什么你学不会递归?告别递归,谈谈我的一些经验   可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! ...

  4. 基础知识《十二》一篇文章理解Cookie和Session

    理解Cookie和Session机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定 ...

  5. 深入理解Cookie和Session机制

    转载理解Cookie和Session机制 目录 Cookie机制什么是CookieCookie的不可跨域名性Unicode编码:保存中文BASE64编码:保存二进制图片设置Cookie的所有属性Coo ...

  6. 理解cookie,session,token

    彻底理解cookie,session,token 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新 ...

  7. [转帖]彻底理解cookie,session,token

    彻底理解cookie,session,token https://www.cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已 ...

  8. 一文理解Cookie、Session

    一文理解Cookie.Session 1.什么是会话 用户打开浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程就称为一个会话: HTTP 是无状态,有会话的 HTTP 是无 ...

  9. 理解Cookie和Session机制(转)

    目录[-] Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie ...

随机推荐

  1. 这款 WordPress商用插件 0day 漏洞满满,且已遭利用

    Wordfence 安全研究员发布报告称,WordPress 商用插件 Total Donations 受多个 0day 漏洞的影响,且这些漏洞已遭利用. 这些严重的漏洞影响所有已知的 Total D ...

  2. PAT A1118 Birds in Forest (25 分)——并查集

    Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...

  3. storm集成kafka的应用,从kafka读取,写入kafka

    storm集成kafka的应用,从kafka读取,写入kafka by 小闪电 0前言 storm的主要作用是进行流式的实时计算,对于一直产生的数据流处理是非常迅速的,然而大部分数据并不是均匀的数据流 ...

  4. ubuntu下修改网卡名称

    Ubuntu下把网卡eth0修改为eth1的步骤: 1.打开配置文件 /etc/udev/rules.d/70-persistent-net.rules,文件内容如下: # This file was ...

  5. 覆写equals方法为什么需要覆写hashCode方法

    覆写equals方法必须覆写hashCode方法,是JDK API上反复说明的,不过为什么要这样做呢?这两个方法之间有什么关系呢? void test() { // Person类的实例作为Map的k ...

  6. Ubuntu16.04中搭建TFTP 和 NFS 服务器

    Ubuntu 16.04中搭建TFTP服务 1. 安装 $ apt-get install tftp-hpa tftpd-hpa   2. 建立目录 $ mkdir /tftpboot # 这是建立t ...

  7. React-性能优化pureComponent

    每当store里有数据更新时,render()函数就会执行,有时候store的更新数据与本组件并没有关系,render()不必执行. 我们可以用shouldComponentUpdate来优化组件. ...

  8. 设计模式-简单工厂Coding+jdk源码解析

    感谢慕课geely老师的设计模式课程,本套设计模式的所有内容均以课程为参考. 前面的软件设计七大原则,目前只有理论这块,因为最近参与项目重构,暂时没有时间把Coding的代码按照设计思路一点点写出来. ...

  9. LInq之Take Skip TakeWhile SkipWhile Reverse Union Concat 用法

    废话不多说,直接上代码,代码有注释!自行运行测试! class Program { static void Main(string[] args) { string[] names = { " ...

  10. [Oracle]包含了MVIEW的表领域,在进行导出,表领域改名,再导入后,MVIEW会消失不见。

    包含了MVIEW的表领域,在进行导出,表领域改名,再导入后,MVIEW会消失不见. 测试环境12.1.0.2 =================步骤1:数据的准备 [oracle@db12102 ad ...