javascript - NuxtJS在中间件中设置Cookie

标签 javascript cookies nuxt.js

我正在构建一个 nuxtjs 应用程序并尝试从全局中间件设置 cookie。我发现this GitHub 上的贡献展示了执行此操作的方法。

所以我像这样实现了我的中间件

export default function ({ isServer, res, query }) {
  if (query.lang) {
    if (isServer) {
      res.setHeader("Set Cookie", [`lang=${query.lang}`]);
    } else {
        document.cookie = `lang=${query.lang}`;
    }
  }
}

我的问题是,当我使用 ?lang=xxx 作为参数访问我的应用程序时,我总是遇到 if 条件的 else block 。所以我得到了错误

document is not defined

有谁知道我的代码有什么问题吗?我看不出与 github 上发布的代码有什么区别。

最佳答案

您应该使用cookie-universal-nuxt .

将其添加到 nuxt.config.js 的模块部分中:
['cookie-universal-nuxt', { 别名: 'cookiz' }],

您可以通过 nuxtServerInit 直接在商店中使用它:

async nuxtServerInit({ commit, state, dispatch },
    { app, store, route, req, res, error, redirect }
) {
    app.$cookiz.set('lang', route.query.lang)
})

或者在中间件中:

export default function ({ app, res, query }) {
  if (query.lang) {
    app.$cookiz.set('lang', query.lang)
  }
}

关于javascript - NuxtJS在中间件中设置Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60336236/

相关文章:

javascript - 如何在Vue中提交表单,重定向到新路由并传递参数?

javascript - TinyMCE 4 初始化按钮

javascript - Jquery一次清除多个文本字段的值

javascript - 将下拉菜单与响应式导航栏中的输入对齐

javascript - 使用 AngularJS : auth cookie sent for/_session only 登录 CouchDB

google-chrome - 谷歌浏览器 iframe 的跨域 cookie 问题

vue.js - 使用 nuxt/pwa 进行离线通知

javascript - 在 Javascript 中检查新访客

javascript - jQuery getJSON 不发送 cookie

nuxt.js - 出现错误 "defineNuxtConfig is not defined"