资讯专栏INFORMATION COLUMN

Session

eternalshallow / 544人阅读

摘要:注意的好处是防止用户随意篡改,获取别人的信息。因为是随机数,或者随机数夹杂着一些字母,所以没有可能暴力破解,获取别的用户的信息。类比相当于发会员卡,会员卡上只有卡号。

Session Cookie 和 Session 区别与联系

由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session
典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户并且跟踪用户,这样才知道购物车里面有几件物品。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件、集群等。

服务端如何识别特定的客户?第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,就可以依据此来识别不同客户端了。
如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。

总结:

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式

来源链接:https://www.zhihu.com/questio...

什么是session?

服务器通过Cookie发送给客户端一个sessionID

sessionID对应服务器里的一小块内存,这里保存着用户的信息,例如登录信息,购物车信息等。

每次用户访问服务器的时候,服务器通过浏览器发送来的cookie里的sessionID去读取对应的内存里的信息,以此来知道用户的隐私信息。

注意

session的好处是防止用户随意篡改cookie,获取别人的信息。

如果用户随意篡改了sessionID,那么只能重新登录。

因为sessionID是随机数,或者随机数夹杂着一些字母,所以没有可能暴力破解sessionID,获取别的用户的信息。

类比:session相当于发会员卡,会员卡上只有卡号(sessionID)。下次去健身房的时候,只要看卡号上,就能确定你本人的去他信息。
而cookie相当于把信息都写在会员卡上了。

关于session的实现代码演示(nodejs)

总结 Session 与 Cookie 的关系

一般来说,Session 基于 Cookie 来实现。

Cookie

服务器通过 Set-Cookie 头给客户端一串字符串

客户端每次访问相同域名的网页时,必须带上这段字符串

客户端要在一段时间内保存这个Cookie

Cookie 默认在用户关闭页面后就失效,后台代码可以任意设置 Cookie 的过期时间

大小大概在 4kb 以内

Session

Session(不翻译,或翻译为会话)

将 SessionID(随机数)通过 Cookie 发给客户端

客户端访问服务器时,服务器读取 SessionID

服务器有一块内存(哈希表)保存了所有 session

通过 SessionID 我们可以得到对应用户的隐私信息,如 id、email

这块内存(哈希表)就是服务器上的所有 session

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98388.html

相关文章

  • Django session源码阅读

    摘要:初步的猜想是第一次和第二次请求间隔太短,数据还没有存进,到时读取失败,带着这样的疑问,阅读了的源码。源码非常简单,没有复杂的数据结构和算法,读起来没费什么劲。当过期后,用户获取的就为空,就会为用户重新初始化生成。 欢迎大家访问我的博客,查看更多内容。 背景 最近在做djnago开发时,遇到一个session问题,过程如下,第一个POST请求时,把数据存放在session,在第二次POS...

    Profeel 评论0 收藏0
  • session和cookie

    摘要:的作用就是为了解决协议无状态的缺陷所作的努力。的内容主要包括名字,值,过期时间,路径和域。这种生命期为浏览器会话期的被称为会话。而机制采用的是一种在服务器端保持状态的解决方案。中的有效期默认分钟,也就是说,客户端超过分钟,当前就会失效。 会话控制是什么? cookie和session都是跟踪整个会话过程的技术手段。而会话,就是用户通过浏览器和服务器的一次通话。 为什么要有会话控制? 因...

    ruicbAndroid 评论0 收藏0
  • session理解

    摘要:理解还是那句。。。。而还不是很理解的,谷歌下,要理解这两个东西其实也不难。。当浏览器端禁用时,这个依然会被创建。其实我的理解很简单不对的地方欢迎指出。。 session理解 还是那句。。。。新手上路。。大神欢迎指点 1.session的概念 其实什么是session?什么是cookie?这些都是些老掉牙的问题了。。而做过相关的开发的人,基本都知道。。而还不是很理解的,谷歌下,要理解这两...

    phpmatt 评论0 收藏0
  • Laravel学习笔记之Session源码解析(上)

    摘要:然后中间件使用方法来启动获取实例,使用类来管理主要分为两步获取实例,主要步骤是通过该实例从存储介质中读取该次请求所需要的数据,主要步骤是。 说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助。Laravel在web middleware中定义了session中间件IlluminateSess...

    NervosNetwork 评论0 收藏0

发表评论

0条评论

eternalshallow

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<