微信小程序需手动实现带过期时间的cookie存储,核心是存入时间戳并读取时校验;可自定义解析expires/max-age或设固定有效期,推荐用number存时间戳;读取前比对date.now()判断是否过期,过期则清理并重新登录;使用weapp-cookie库可自动处理有效期、作用域及清理;注意按域名分key存储、合并读写、服务端兜底及平台api差异。

微信小程序本身不支持原生 Cookie,也没有自动过期机制,所以模拟有效期必须靠开发者自己控制。核心思路是:把过期时间作为元数据一并存入缓存,并在读取时主动比对当前时间。
手动实现带过期时间的 Cookie 存储
每次保存服务端返回的 Cookie 字符串(如 sessionid=abc123; Expires=Wed, 15 Jan 2026 10:00:00 GMT)时,不能只存值,还要提取或生成对应的过期时间戳:
- 若响应头含
Set-Cookie且带Expires或Max-Age,可解析后转为毫秒时间戳存入 storage(例如cookie_expires) - 若后端未提供标准过期字段,可按业务需要设定固定有效期,比如登录态缓存 2 小时:
const expires = Date.now() + 2 * 60 * 60 * 1000 - 建议统一用
Number类型存储过期时间,避免字符串解析歧义
读取时校验是否过期
发起请求前,先检查缓存的 Cookie 是否仍在有效期内:
播客文章生成器。将音频文字稿、节目链接、摘要笔记转化为结构清晰、适合发布的图文文章。支持多种输出风格(深度解析、精华摘要、对话体重构、社交媒体切片)和多种输出格式(Markdown、微信公众号、知乎、企业内刊)。触发词:播客文章、播客转文章、podcast to article、podcast article
- 从 storage 中同时取出 Cookie 值和对应过期时间戳
- 用
Date.now()与过期时间比较,小于则有效,否则视为失效 - 失效后应清空该 Cookie 缓存,并触发重新登录或刷新凭证逻辑
- 示例判断:
if (Date.now() > wx.getStorageSync('cookie_expires')) { /* 过期 */ }
使用 weapp-cookie 库简化管理
第三方库 weapp-cookie 已内置有效期处理逻辑,能自动解析 Max-Age 和 Expires,并按时清理过期项:
- 引入后,调用
cookies.set('key', 'value', { maxAge: 3600 })即可设置 1 小时有效期 - 调用
cookies.get('key')时,库内部会自动跳过已过期条目 - 无需手动维护时间戳,也避免了因设备时间不准导致的误判问题
- 支持 domain/path 作用域,更贴近浏览器行为
注意事项与避坑点
实际落地中容易忽略几个关键细节:
- 小程序 storage 是全局共享的,多个 Cookie 项不要混存在同一个 key 下,建议按域名或用途分 key 存储(如
cookie_api.example.com) - 避免高频读写 storage,可将多个 Cookie 合并为一个对象统一存取,减少同步 I/O 次数
- 用户手动清除小程序缓存时,所有数据都会丢失,有效期机制无法起作用,需配合服务端 session 校验兜底
- 不同平台(微信/支付宝/头条)对 storage 读写性能表现不一,复杂场景建议用
Async版本 API(如wx.setStorage)替代同步版








