形象理解Cookie,Session

    科技2022-07-10  131

    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(银行账户),然后进行其它操作。

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

    在浏览器中输入天猫的网址,然后回车;天猫的服务器在收到请求后,在返回给你网页内容的同时,新建一个session,然后把session的ID放到cookie中返回;浏览器收到响应后,渲染网页的页面展示商品,同时发现有cookie,就保存一份cookie;选到自己喜欢的商品后,点击加入购物车,浏览器就会将选择的商品和cookie一起发给天猫的服务器;天猫的服务器收到你加入购物车的请求后,拿到传过来的cookie中的ID,到session中一查,原来你已经来过了,就直接在session中记录你要购买的商品;选购完所有的商品后,你想看下自己买全没有,就查看购物车;天猫服务器在接收到查看购物车请求后,根据cookie中的ID,在session中查询到你加到购物车里面的所有商品,返回给你。

    转载于:链接1

    二. 一家咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠,然而一次性消费5杯咖啡的机会微乎其微,这时就需要某种方式来纪录某位顾客的消费数量。想象一下其实也无外乎下面的几种方案:

    1、该店的店员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了。这种做法就是协议本身支持状态。

    2、发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态。

    3、发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息。这种做法就是在服务器端保持状态。

    由于HTTP1.0协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。

    具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的。

    转载于:链接2

    Processed: 0.045, SQL: 8