news 2026/5/1 7:56:42

Session和Cookie有什么区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Session和Cookie有什么区别

SessionCookie是 Web 开发中管理用户状态的核心技术,二者配合实现 “保持用户登录、记录操作信息” 等功能,但本质是两种不同的机制,核心区别可以从「存储位置、安全性、生命周期」等维度拆解:

一、最核心区别:存储位置不同

特性CookieSession
存储位置存放在客户端浏览器(用户本地)存放在服务器端(后端内存 / 数据库 / Redis)
存储形式键值对形式存储的文本文件(大小通常限制在 4KB 内)对象形式存储在服务器(大小通常由服务器内存 / 配置决定)

二、其他关键区别(从开发 / 使用角度)

对比维度CookieSession
安全性弱(存储在客户端,可被用户篡改 / 删除)强(存储在服务器,用户无法直接修改)
数据类型仅支持字符串(需手动序列化复杂数据)支持任意Java对象(直接存储对象)
生命周期可手动设置过期时间(如 7 天),过期前一直保存在客户端默认随浏览器关闭而销毁(或服务器端设置超时时间,如 30 分钟无操作则失效)
传递方式每次请求自动通过HTTP请求头Cookie字段)发送给服务器需通过Cookie(默认用JSESSIONID)或URL重写传递SessionID,服务器通过SessionID找到对应的 Session 对象
资源占用不占用服务器资源(存在客户端)占用服务器资源(高并发场景需用 Redis 等中间件存储,避免内存溢出)
跨域支持默认不支持跨域(可通过 CORS 配置允许,但有安全风险)本身不涉及跨域,但传递SessionID的 Cookie 可能受跨域限制

三、通俗理解(举个登录的例子)

比如你登录电商网站:

  1. 你输入账号密码后,后端验证通过,创建一个 Session 对象(存你在服务器的登录状态、购物车信息),并生成一个唯一的SessionID(如JSESSIONID=abc123);
  2. 后端把SessionIDCookie 的形式发送给浏览器,浏览器将这个 Cookie 存在本地;
  3. 之后你每次访问网站,浏览器都会自动把这个 Cookie(包含SessionID)发给服务器;
  4. 服务器通过SessionID找到对应的 Session 对象,从而知道 “你是已登录的用户”。

四、使用场景选择

  • 用 Cookie 的场景
    • 存储不敏感的信息(如 “记住用户名”“语言偏好”);
    • 实现 “7 天免登录”(设置 Cookie 的过期时间为 7 天)。
  • 用 Session 的场景
    • 存储敏感信息(如用户 ID、登录状态);
    • 记录用户的临时操作(如未提交的表单内容)。

核心总结

Cookie 是 “服务器给客户端的‘身份证’”,Session 是 “服务器端记录用户信息的‘档案’”——Cookie 负责传递 SessionID,Session 负责存储用户的实际状态信息,二者配合实现用户状态的保持。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:36:42

vue+uniapp基于Android的旅游景点预约畅游掌上通应用 小程序

文章目录项目背景核心功能技术实现应用价值主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!项目背景 随着移动互联网的普及,旅游行业逐渐向数字…

作者头像 李华
网站建设 2026/4/30 14:09:29

【现代C++开发必读】:C++26如何彻底重构std::future异常传递模型

第一章:C26 std::future 异常处理的演进背景C 标准库中的 std::future 自 C11 引入以来,一直是异步编程的核心组件之一。它为获取异步任务结果提供了统一接口,但在异常传播和处理方面长期存在使用不便的问题。开发者在调用 get() 方法时&…

作者头像 李华
网站建设 2026/4/30 17:16:25

Conda环境激活失败怎么办?lora-scripts依赖安装排错指南

Conda环境激活失败怎么办?lora-scripts依赖安装排错指南 在尝试用 lora-scripts 训练自己的风格模型时,你是否遇到过这样的场景:刚配好数据、写完配置文件,信心满满地执行 conda activate lora-env,结果终端却返回 Co…

作者头像 李华
网站建设 2026/5/1 6:29:05

使用国内镜像网站加速huggingface模型下载以配合lora-scripts

使用国内镜像加速 Hugging Face 模型下载与 LoRA 训练实践 在当前 AI 技术快速落地的背景下,越来越多开发者开始尝试对大模型进行微调,以适配特定场景。其中,LoRA(Low-Rank Adaptation)因其轻量高效、显存占用低的特点…

作者头像 李华
网站建设 2026/5/1 8:44:13

【C++26反射黑科技】:手把手教你实现零成本序列化代码

第一章:C26反射与零成本序列化的未来C26 正在为现代系统编程引入一项革命性特性——静态反射(static reflection),它将彻底改变对象序列化、元编程和配置管理的方式。通过编译时获取类型信息,开发者无需依赖宏或外部代…

作者头像 李华
网站建设 2026/5/1 7:36:59

【Linux+C++26性能调优秘籍】:为什么你的线程必须绑定特定核心?

第一章:Shell脚本的基本语法和命令Shell脚本是Linux/Unix系统中自动化任务的核心工具,通过编写可执行的文本文件,用户能够组合系统命令、控制程序流程并处理数据。一个典型的Shell脚本以解释器声明开头,最常见的是#!/bin/bash&…

作者头像 李华