无法在服务器端Nuxt.js设置cookie

问题描述 投票:0回答:2

我正在使用初始 Nuxt 函数(在重新加载时调用)来设置重要数据,例如 userId 和 token。我可以从cookie中读取数据,但无法将数据保存到cookie中。

initAuth(context, req) {
try {
  const cookie = req.headers.cookie
  if (req && cookie) {
    let token = getCookieServerSide('token', cookie)
    let userId = getCookieServerSide('userId', cookie)
    let deviceId = getCookieServerSide('deviceId', cookie)

    if (token) {
      context.commit('SET_TOKEN', { token })
    }
    if (userId) {
      userId = parseInt(userId)
      context.commit('users/SET_USER_ID', userId, { root: true })
    }
    if (!deviceId) {
      deviceId = generateUniqueId()
      setCookie('deviceId', deviceId)
    }
    context.commit('SET_DEVICE_ID', deviceId)
  }
} catch (error) {}

这是初始方法,

setCookie
看起来像这样:

export const setCookie = (name, value) => {
  Cookie.set(name, value)
}

通过阅读不同的评论,这应该是有效的解决方案,但 cookie 未保存

cookies nuxt.js
2个回答
1
投票

您当前的 cookie 库仅与前端代码上的执行兼容。

要在客户端和服务器端设置 cookie,您必须使用支持通用用法的库,例如

universal-cookie

使用 Nuxt,您可以使用

cookie-universal-nuxt
在客户端和服务器端设置、获取和删除 cookie,基于之前的库。


0
投票

您可以像这样在 nuxt 3 服务器端存储 cookie:

export default defineEventHandler(async (event) => {
 setCookie(event,"cookie_name_string",cookie_value,{ httpOnly: true })
}

H3 cookie 文档

© www.soinside.com 2019 - 2024. All rights reserved.