news 2026/6/5 21:16:49

跟我一起学“仓颉Web”基础编程-Cookie、Session、Token和JWT

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
跟我一起学“仓颉Web”基础编程-Cookie、Session、Token和JWT

目录

一、Cookie

二、Session

三、Token

四、JWT

五、关系

六、Cookie案例

七、小结


一、Cookie

Cookie:浏览器自带的小型文本存储,大小约 4KB。

  • 服务器通过响应头Set-Cookie发给浏览器
  • 浏览器自动保存、自动携带到下一次请求
  • 用途:存登录态、跟踪用户、个性化配置等
  • 特点:跨请求、跨页面持久,但不安全、大小有限

Cookie 只是存储载体,不是登录机制!

二、Session

Session:服务器内存 / 数据库里保存的用户会话

  • 登录成功后,服务器生成一个唯一sessionId
  • sessionId存在 Cookie 里发给浏览器
  • 后续请求浏览器自动带sessionId→ 服务器查表 → 认出你是谁

三、Token

Token:一串代表身份的字符串,服务器不存储,只负责验证。

  • 登录成功后,服务器直接生成一串加密字符串给客户端
  • 客户端自己存(localStorage / Cookie)
  • 每次请求手动带上 Token
  • 服务器拿到 Token → 解密 / 验签 → 认出你是谁

特点:无状态、跨域友好、移动端友好

四、JWT

JWT(JSON Web Token):一串代表身份的字符串,服务器不存储,只负责验证。

  • 登录成功后,服务器直接生成一串加密字符串给客户端
  • 客户端自己存(localStorage / Cookie)
  • 每次请求手动带上 Token
  • 服务器拿到 Token → 解密 / 验签 → 认出你是谁

特点:无状态、跨域友好、移动端友好

五、关系

特点CookieSessionTokenJWT
存储位置浏览器服务器客户端客户端
是否需要服务器不需要需要不需要不需要
跨域能力受限制很差极强
移动端支持情况一般极好
性能费服务器
安全性
依赖关系独立使用依赖Cookie不依赖Cookie不依赖Cookie
典型场景记住密码早期网站登录APP、第三方登录前后端分离、微服务

1)Token 和 JWT 是什么关系?

  • JWTToken
  • Token不一定是JWT(也可以是随机字符串)

JWT = 标准化、自包含、可携带信息的 Token

2)Session 和 Token 最大区别?

  • Session:服务器存状态(有状态)
  • Token:服务器不存状态(无状态)

无状态 = 水平扩展强 = 适合分布式、微服务、跨域

3)JWT 必须存在 localStorage 吗?

不是。 JWT 可以存在:

  • localStorage
  • Cookie
  • 内存

存在 Cookie 里更安全(可加 HttpOnly 防 XSS)

4)Cookie 安全吗?

不安全,容易被:

  • XSS 窃取
  • CSRF 伪造

所以现代方案会用:

  • JWT + HttpOnly Cookie
  • 或 Token + 签名

5)选择指南

  • 早期网站、不用跨域→ Session + Cookie
  • 前后端分离、微服务→ JWT
  • APP、小程序→ Token / JWT
  • 需要跨域、多服务器共享登录→ JWT

以上是经验之谈,实际使用还是要实事求是!

六、Cookie案例

核心代码

package WebStudy import stdx.net.http.* main() { // 创建Server对象,开始服务 let server = ServerBuilder().addr('127.0.0.1').port(8080).build() server.distributor.register('/setCookie', setCookie()) server.distributor.register('/getCookie', getCookie()) println('设置Cookie: http://localhost:8080/setCookie') println('获取Cookie: http://localhost:8080/getCookie') server.serve() } // 向浏览器里面设置Cookie public func setCookie(): FuncHandler { return FuncHandler { httpContext => httpContext.responseBuilder.header('Set-Cookie', 'username=钝子生') httpContext.responseBuilder.header('Set-Cookie', 'password=123456') httpContext.responseBuilder.header('content-type', 'text/html;charset=utf-8') httpContext.responseBuilder.body('设置Cookie') } } // 从浏览器里面获取Cookie public func getCookie(): FuncHandler { return FuncHandler { httpContext => // 获取响应头 let headers = httpContext.request.headers // 获取Cookie let headerCookies = headers.get('cookie') if (headerCookies.size > 0) { for (headerCookie in headerCookies) { let cookie = headerCookie.split(';') for (item in cookie) { let cookieParam = item.split('=') if (cookieParam.size == 2) { println('name: ${cookieParam[0].trimAscii()}, value: ${cookieParam[1].trimAscii()}') } } } } httpContext.responseBuilder.header('content-type', 'text/html;charset=utf-8') httpContext.responseBuilder.body('获取Cookie') } }

运行结果

七、小结

本章为大家详细的介绍了仓颉Web开发中Cookie、Session、Token和JWT的内容,下一章为大家介绍文件上传与下载的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉Web基础编程有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

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

嵌入式RTOS稳定性对比与选型指南

嵌入式RTOS稳定性对比与选型指南本文是《操作系统稳定性排行榜与选型指南》的姊妹篇,专注嵌入式实时操作系统(RTOS)领域。覆盖商业认证级、国际开源主流、国产 RTOS 三大阵营共 20 款系统,从稳定性、认证、生态、资源占用等维度对…

作者头像 李华
网站建设 2026/6/5 21:14:11

Bilibili直播推流码获取工具深度解析:绕过官方限制的专业直播方案

Bilibili直播推流码获取工具深度解析:绕过官方限制的专业直播方案 【免费下载链接】bilibili_live_stream_code 用于在准备直播时获取第三方推流码,以便可以绕开哔哩哔哩直播姬,直接在如OBS等软件中进行直播,软件同时提供定义直播…

作者头像 李华
网站建设 2026/6/5 21:14:09

线上 CPU 飙升 100%?一次关于 Python 循环 GC 开销与向量化优化的硬核排查

线上 CPU 飙升 100%?一次关于 Python 循环 GC 开销与向量化优化的硬核排查前言 生产环境曾出现 CPU 占用率瞬间突破 100% 的告警。排查发现,核心计算模块存在大量嵌套循环。这些循环在处理大矩阵时,频繁创建临时 Python 对象。对象创建直接触…

作者头像 李华
网站建设 2026/6/5 21:12:16

如何快速解密Navicat数据库密码:终极免费工具完整指南

如何快速解密Navicat数据库密码:终极免费工具完整指南 【免费下载链接】navicat_password_decrypt 忘记navicat密码时,此工具可以帮您查看密码 项目地址: https://gitcode.com/gh_mirrors/na/navicat_password_decrypt 你是否曾经遇到过这样的困境&#xff1…

作者头像 李华
网站建设 2026/6/5 21:10:50

毕业论文查重完重复率太高了,有什么好方法降重的吗?

先别急着通宵改。我见过太多人一看到重复率:35%。45%。甚至60%。第一反应就是从第一页开始疯狂改。结果改了两天。重复率只降了2%。人先崩了。其实降重最怕的不是重复率高。而是不会找重点。第一步:先看哪里红,不要只看总重复率很多同学只盯着…

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

终极免费音乐解锁指南:3分钟掌握Unlock-Music完全使用技巧

终极免费音乐解锁指南:3分钟掌握Unlock-Music完全使用技巧 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: h…

作者头像 李华