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 和跨域问题的?

相关推荐
白露与泡影10 分钟前
Spring Boot 实现验证码:Hutool-captcha、AJ-Captcha、EasyCaptcha 到底怎么选?
java·spring boot·后端
小蒜学长24 分钟前
基于Springboot+Vue的高校教师教学业绩综合管理系统的设计与开发(代码+数据库+LW)
java·数据库·spring boot·后端·教学业绩管理·三级权限
熊哈哈O_o26 分钟前
千亿级时序数据:存储压缩、高速写入与时序超表技术
后端
Mikko726 分钟前
Spring Boot 3.5.16 自带的 Tomcat 10.1.55 中了哪些 CVE?其中一条是修上一个漏洞时带进来的
java·spring boot·后端·安全·tomcat
站大爷IP33 分钟前
Python的字符串查找把我坑惨了,原来find和index的区别这么大
后端
sp4234 分钟前
一个支持 Java 8 的 MCP SDK(支持最新 2026-07-28 协议)
后端·mcp
Gopher_HBo36 分钟前
HTTP2传输层与流控
后端
Bazingga36 分钟前
同一个脑子,不同的身体:桌面办公智能体全景拆解
后端
用户3028225306840 分钟前
你的 API 只返回 30 条,为什么数据库还是被打满了?
数据库·后端·架构
Hespethorn42 分钟前
MQTT 的四个工程暗礁:遗嘱、保留消息、ACL 与主题设计
后端·物联网