【问题标题】:Can't set cookie on server side Nuxt.js无法在服务器端 Nuxt.js 上设置 cookie
【发布时间】:2020-12-20 18:25:47
【问题描述】:

我正在使用在重新加载时调用的初始 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)
}

通过读取不同的 cmets 这应该是有效的解决方案,但不会保存 cookie

【问题讨论】:

  • 您使用哪个库来设置 cookie?您将需要使用支持在服务器上设置 cookie 的库。
  • @FlorianPallas 我正在使用Cookie-js
  • 然后尝试使用支持服务器端的库,就像@NicolasPennec 推荐的那样。
  • @NicolasPennec 它正在工作,你

标签: cookies nuxt.js


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-09-27
  • 2022-08-17
  • 1970-01-01
  • 2019-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
相关资源
最近更新 更多