分布式基础__session 和 cookie的差异

我们都知道 session是存储在服务器端的,cookie是存储在客户端的;

他们两者之间又有什么联系呢?这点要先从HTTP先说起。

HTTP协议是一种无状态的 通信协议 。那么这就以为着 客户端按道理是需要每次请求之前都要和服务器做连接的。 但是每次都进行这种连接,会非常耗时,并且这些重复的网络请求的意义都不大,所以如何避免这些重复的工作就成为了聪明人们发挥聪明的地方了。

cookie的特点就是比较大,可以储存一些信息,比如数据。 session一般保存的都是用户信息之类的数据。

在客户端请求服务器的这个过程中,请求到了服务器端时,Tomcat或者jetty之类的容器会生成一个:JsessionID。 这个ID号 是不唯一的,大部分的session机制都会将这个JsessionID 保存到cookie当中去。同时session中也有这个JsessionID。

然后又因为浏览器中的cookie它是保存到 计算机的硬盘中的,所以就算我们关闭了浏览器只要不人为的清空浏览器中的缓存cookie,那么浏览器按道理就会一直保存着这个JsessionID,只要通过这个JsessionID就能找到 这个用户的session信息。

但是如果你的计算机处于开机状态又没有锁屏,结果别人打开了你的浏览器,就可以直接获取你的一些信息这样也太不安全了。所以服务器端也会对这个session进行一个 时间限制,一般是30分钟 可以在web.xml中设置。

30分钟过后服务器会怎么处理这个信息呢? 当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。

以前只是知道个大概,后来仔细点把这个事给想清楚了,很简单的知识,但又很基础很重要的知识,还是有必要记一记的

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏最高权限比特流

使用svn时出现Can't switch /XXX/XXX because it is not the repository yet

20030
来自专栏性能与架构

Pinterest 的 ZooKeeper 经验

Pinterest 在官方博客上发布了自己对于 ZooKeeper 的运用经验,下面一起看下 Pinterest 是如何应用 ZooKeeper 及遇到的问题和...

44080
来自专栏从流域到海域

数据库连接池

数据库连接池相关资料: 关于数据库连接池的使用,首先我们要明白我们为什么要用它,对应普通的数据库连接操作,通常会涉及到以下一些操作是比较耗时的: 网络通讯...

27470
来自专栏Java成神之路

Idea_学习_09_Idea 方法自动生成参数默认名

生成方法后,还空着参数,可以使用 ctrl + alt + 空格 ,列出参数,然后选择参数即可。

13740
来自专栏Ryan Miao

web项目中,视图层中关于相对路径和绝对路径

1.在jfinal项目中   因为一直使用的jfinal,没感觉路径问题。   举个栗子,项目名字叫做test.访问一个Controller的映射为/user/...

36240
来自专栏大壮

iOS GCD定时器

39130
来自专栏好好学习吧

testng执行多个suite

由于testng.xml中只能设置一个<suite>标签,就无法创建多个测试集,通过<suite-files >标签可以实现允许多个测试集。

50610
来自专栏KaliArch

RedisLive监控Redis服务

  RedisLive是由python编写的并且开源的图形化监控工具,非常轻量级,核心服务部分只包含一个web服务和一个基于redis自带的info命令以...

51180
来自专栏北京马哥教育

原创投稿 | 使用nagios监控主机及服务

写在前头:限于个人对nagios的了解有限,写得不够深入与系统,甚至可能会有些错误,各位看官还多包涵。本文主要涉及的是nagios daemon、nrpe及三个...

369110
来自专栏Debian社区

配置 Debian Stretch 的安装源

采用最小化方式安装的 Debian,在没有接入网络的情况下,默认是没有配置 apt 安装源,也没有安装远程管理用的 SSH 服务的,这个时候就无法使用 apt-...

37920

扫码关注云+社区

领取腾讯云代金券