博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
session机制详解
阅读量:2439 次
发布时间:2019-05-10

本文共 583 字,大约阅读时间需要 1 分钟。

让我们用几个例子来描述一下cookie和session机制之间的区别与联系。笔者曾经常去的一家咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠,然而一次性消费5杯咖啡的机会微乎其微,这时就需要某种方式来纪录某位顾客的消费数量。想象一下其实也无外乎下面的几种方案: 

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

不得不说,这个例子很生动,更多内容,请参见

转载地址:http://cacqb.baihongyu.com/

你可能感兴趣的文章
prisma 风格设置_Prisma中的身份验证-第1部分:设置
查看>>
canvas动画:黑客帝国_使用Canvas API进行动画处理-第3部分:重力和动态渲染
查看>>
golang 结构体标签_如何在Go中使用结构标签
查看>>
canvas 绘制图片形状_使用JavaScript Canvas API绘制形状
查看>>
flutter顶部小部件_使用VoidCallback和Function(x)与Flutter进行小部件通信
查看>>
JavaScript中的getOwnPropertyDescriptors方法
查看>>
使用Express在Node.js中进行条带支付简介
查看>>
node.js运行js_如何使用Node.js创建和运行计划的作业
查看>>
react 滚动条组件_使用React和样式化组件的页面滚动进度条
查看>>
vue事件处理有哪些方法_Vue事件处理方法
查看>>
阿里云redis 密钥登录_如何使Redis中的密钥失效
查看>>
redis中存集合_如何在Redis中管理集合
查看>>
flutter中的动画效果_Flutter中的基本动画
查看>>
gatsby_使用gatsby-awesome-pagination在Gatsby中进行分页
查看>>
Angular CLI:自定义webpack配置
查看>>
如何安装svelte_Svelte 3入门
查看>>
golang debian_如何在Debian 9上安装Go
查看>>
debian安装r_如何在Debian 10上安装R
查看>>
morgan logger_morgan入门:Node.js Logger中间件
查看>>
vue路由过渡_使用Vue进行更高级的路由:使用Vue路由器进行过渡
查看>>