zoukankan      html  css  js  c++  java
  • session,cookie机制

    推荐博客http://justsee.iteye.com/blog/1570652

    由于http协议的无状态性,使得在动态客户端和服务端的每一次交互中都需要进行身份验证,session和cookie就是为了解决这种需要频繁验证的麻烦而作出的努力。

    session机制是采用的是在服务器端保持状态的方案。

    在用户端保留一个唯一的编号,对应编号的信息(如访问信息)保存在服务端,进行交互时客户端传递编号,服务端接收到编号在服务端数据库中查找对应的信息。

    cookie机制采用的就是这种在客户端保持状态的方案

    在用户端保留一个保存用户信息的对象,进行交互时客户端传递这个对象,服务端读取其中的信息即可。

    上述链接文章中有一个比喻很形象

     让我们用几个例子来描述一下cookie和session机制之间的区别与联系。笔者曾经常去的一家咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠,然而一次性消费5杯咖啡的机会微乎其微,这时就需要某种方式来纪录某位顾客的消费数量。想象一下其实也无外乎下面的几种方案: 
    
        1、该店的店员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了。这种做法就是协议本身支持状态。 
    
        2、发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态。 
    
        3、发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息。这种做法就是在服务器端保持状态。 
    
        由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。 
    View Code

     

  • 相关阅读:
    怎样跟老板提加薪,来看看自己值多少钱
    leetcode-204-Count Primes
    Atitit. 异常的使用总结最佳实践java .net php Vo8f
    设计模式——第一课
    linux svn命令具体解释
    BTrace介绍和生产环境样例
    5.3.5 namedtuple() 创建命名字段的元组结构
    linux驱动开发之九鼎板载蜂鸣器驱动测试【转】
    hrtimer高精度定时器的简单使用【学习笔记】
    Linux时间子系统之(一):时间的基本概念【转】
  • 原文地址:https://www.cnblogs.com/wolf-yasen/p/8947125.html
Copyright © 2011-2022 走看看