当前位置:首页 > 编程技术 > 正文内容

cookie 和 session 的区别

yc8881年前 (2022-12-12)编程技术171

cookie 和 session 的区别

1. 前言


cookie 和 session 的区别是什么?这个问题在面试中问到的频率非常高

cookie 和 session 的共同点: 都是用来记录用户访问浏览器时保存的数据,比如:用户的身份信息等


cookie 工作原理:

浏览器端第一次发送请求到服务端,服务器端创建 cookie,该 cookie 中包含用户的信息,然后将该 cookie 发送到浏览器端。浏览器端再次访问服务器端时会携带上服务器端创建的这个 cookie,服务器端通过 cookie 中携带的数据区分不同的用户

session 工作原理:

浏览器端第一次请求到服务端时,服务器端会创建一个 session,同时创建一个特殊的 cookie,这个 cookie 的值就是 session_id,服务器端将这个 cookie 发送到浏览器端。当浏览器端再次请求服务器端时,浏览器端会携带上这个 cookie,服务器端会很根据这个 cookie 值,也就是 session_id,去查询 session 数据,从而区分不同用户


cookie 数据存放在浏览器端,session 数据存放在服务器端,但是 session_id 存放在浏览器端

1. 安全性

因为 cookie 数据存放在浏览器端,所以 cookie 没有 session 安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全性建议使用 session

2. session 会占用服务器性能

session 会在一定时间内保存在服务器上,当访问增多时会比较占用服务器的性能,考虑到减轻服务器性能耗损,应当使用一些 cookie

3. cookie 保存的数据受限

单个 cookie 保存的数据不超过 4k,而 session 则存储在服务器端,可以保存更多复杂的数据类型


当我们了解过 session 的工作原理后,可以得知,使用 session 的过程中,session_id 是存放在浏览器端的 cookie 中的,所以,当我们禁用 cookie 后,session 是不能正常使用的

那么问题来了,禁用了 cookie,还想要正常使用 session,应该怎么做呢?

禁用 cookie 后,session 不能正常使用的原因是 cookie 中的 session_id 无法发送到服务器端;所以,只要将 session_id 想办法传递给服务器端即可。方法有很多,比如最常见的: URL 传参

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10212.html

标签: 软件编程
分享给朋友:

“cookie 和 session 的区别” 的相关文章

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】Java从resources读取文件内容的方法有哪些

【说站】Java从resources读取文件内容的方法有哪些

本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...

【说站】linux中redis如何以redis用户重启?

【说站】linux中redis如何以redis用户重启?

通过上图我们可以看到,目前状态是已经以 redis 用户启动着,我想修改下 redis 的密码,然后怎么以 redis 用户重启呢?redis 是 nologin 用户,不能通过 su redis 切...

【说站】jenkins配置ssh服务器并配置ssh servers

【说站】jenkins配置ssh服务器并配置ssh servers

1.系统管理-》配置-》Publish over SSH当然,没有这个插件的第一时间去插件管理里面去下载2.生成秘钥任意找一台服务器,生成即可。2.1已有秘钥无须在生成,只需要吧公钥配置到将要配置的s...