Cookie和JWT

1. 核心定义:它们是谁?

  • JWT (JSON Web Token) :是一种数据格式。它像是一张"电子身份证",内部加密保存了用户 ID、姓名、过期时间等信息。它解决的是**"信息如何安全存储和校验"**的问题。

  • Cookie :是一种传输与存储机制。它是浏览器的一个"小抽屉",也是 HTTP 协议的一个 Header。它解决的是**"信息如何在浏览器和服务器之间自动搬运"**的问题。


2. 关系总结:信件与信封

在你的项目中,两者的关系可以总结为:JWT 是信件,Cookie 是信封。

  • 不结合时 :JWT 通常放在 Header 的 Authorization 字段里,需要前端手动写代码去塞。

  • 结合后 :后端把 JWT 塞进 Cookie。浏览器在每次请求时,会自动把 Cookie 里的 JWT 带给后端,无需前端干预


3. 关键差异对比

面试官最喜欢问:既然有了 Session 模式的 Cookie,为什么还要用 JWT 模式的 Cookie?

维度 传统 Session + Cookie JWT + Cookie (你的项目)
存储位置 服务器(内存/数据库/Redis) 客户端(存放在浏览器中)
状态性质 有状态。后端必须存一份 Session 才能识别你是谁。 无状态。后端不存任何数据,解密 JWT 字符串即知身份。
扩展性 较差。多台服务器需要做 Session 共享。 极好。任何一台服务器只要有密钥就能解密。
安全性 容易受到 CSRF 攻击。(跨站请求伪造) 同样面临 CSRF,但配合 HttpOnly 极大提升安全性。

4. 为什么要配合 HttpOnly?(面试必杀技)

这是你简历中的亮点。你必须告诉面试官:

  • 默认 Cookie 是不安全的,JavaScript 可以直接读取它。

  • HttpOnly Cookie:一旦设置,JavaScript 脚本无法访问此 Cookie。这使得即便网站存在 XSS 漏洞,黑客也拿不到你的 JWT。


5. 你的项目闭环(话术参考)

"在我的《中国街健网》项目中,我采用了 JWT + HttpOnly Cookie 的方案。后端生成 JWT 令牌后通过响应头下发给浏览器,利用 Cookie 的自动携带特性简化了前端开发;同时,通过 JWT 的无状态特性降低了服务器的存储压力。通过设置 HttpOnly 标志,有效防御了 XSS 攻击对身份令牌的窃取。"


💡 总结一句话

JWT 负责"内容自包含且防篡改",Cookie 负责"在浏览器端自动且安全地传递"。

秦同学,这套总结涵盖了面试中 80% 的认证相关问题。既然总结好了,我们要不要聊聊你的 Linux 服务器 118.89.123.57 上,是如何配置 Nginx 来处理这些 Cookie 和跨域问题的?

相关推荐
苍何20 分钟前
一手实测 Claude Fable 5,手搓了个 Obsidian 的 Codex 插件
后端
swipe1 小时前
做多轮对话 Agent,为什么我建议把短期记忆放到 Redis
后端·面试·llm
程序员黑豆1 小时前
AI全栈开发之Java:什么是JDK
前端·后端·ai编程
阿明在折腾2 小时前
从Canvas到AI模型:我在线工具站里的图片处理实战
前端·后端
tyung2 小时前
Go 手写 Wait-Free SPSC 无界队列:无 CAS、无锁、泛型节点池
数据结构·后端·go
Lucien3232 小时前
学完 Spring Boot 再看 FastAPI,我破防了
后端
小小龙学IT2 小时前
Go 语言后端开发:从并发模型到生产落地的工程实践
开发语言·后端·golang
程序员cxuan2 小时前
Agents.md 是什么
人工智能·后端·程序员
摇滚侠3 小时前
Java 零基础全套教程,类的加载过程与类加载器的理解,笔记 189
java·后端·intellij-idea
ServBay3 小时前
为什么我劝你不要在Mac上用Docker 进行本地 AI 开发
后端