Skip to content

Cookie 类

函数用途SSR 安全响应式
useCookie读写 Cookie
refreshCookie刷新 Cookie 值N/A

useCookie

SSR 安全的 Cookie 读写,返回响应式 Ref

ts
// 读取 Cookie
const token = useCookie('auth-token')
console.log(token.value)  // 'my-token-value'

// 写入 Cookie
token.value = 'new-token'

// 删除 Cookie
token.value = null
// 或
token.value = undefined

// 带选项
const session = useCookie('session', {
  maxAge: 60 * 60 * 24 * 7,  // 7 天(秒)
  path: '/',
  domain: '.example.com',
  secure: true,              // 仅 HTTPS
  httpOnly: true,             // 仅服务端可写,JS 不可读
  sameSite: 'lax',           // 'lax' | 'strict' | 'none'
  encode: encodeURIComponent,
  decode: decodeURIComponent,
  default: () => ({}),       // 默认值
  watch: true,               // 响应式监听
  readonly: false,            // 只读
  refresh: false,             // v4.4+: 自动刷新过期时间
})
选项类型说明
maxAgenumber最大存活时间(秒)
expiresDate过期时间
pathstring路径(默认 /
domainstring域名
secureboolean仅 HTTPS 传输
httpOnlyboolean仅服务端可访问(防 XSS)
sameSite'lax'|'strict'|'none'SameSite 策略(防 CSRF)
default() => T默认值工厂
watchboolean | 'shallow'监听 Cookie 变化
readonlyboolean只读模式
refreshbooleanv4.4+: 每次赋值延长过期时间

安全推荐

  • 认证 Token:httpOnly: true + secure: true + sameSite: 'lax'
  • 用户偏好:无特殊安全要求
  • CSRF Token:sameSite: 'strict'

refresh 选项(v4.4+)

每次设置值时自动延长 Cookie 过期时间(滑动会话):

ts
const session = useCookie('session-id', {
  maxAge: 60 * 60,     // 1 小时
  refresh: true,       // 每次赋值延长过期时间
})

// 即使值没变,赋值也会延长过期时间
session.value = session.value

适用场景

用户每次操作时延长会话过期时间(如"记住我 7 天")。

refreshCookie

从浏览器刷新 Cookie 值(当 Cookie 被外部修改时,如服务端 API)。

ts
// 刷新单个 Cookie
refreshCookie('auth-token')

// 刷新多个 Cookie
refreshCookie(['auth-token', 'session-id'])

何时需要 refreshCookie

服务端 API 通过 setCookie 修改了 Cookie 后,客户端的 useCookie ref 不会自动更新。调用 refreshCookie 从浏览器读取最新值。

TIP

典型场景:登录/登出后刷新认证 Token

基于 Nuxt 4 官方文档整理编写