nuxtServerInit 不接收身份验证 cookie

nuxtServerInit does not receive auth cookies

我有 nuxtServerInit 函数,它应该接收所有用户的浏览器数据,包括 cookie,但它不会接收 auth 模块(但不是每次!)cookie(我说的是 JWT Bearer 令牌)。

async nuxtServerInit(store, { req }) {
    console.log(req.headers.cookie);
}

在正确的情况下,它会显示如下内容: i18n_redirected=en; auth.strategy=local; auth._token.local=Bearer%20eyJhbG*******

但在其他浏览器中(例如edge),只有在浏览器重启后,才会输出:i18n_redirected=en。但是,如果您更新网站或在另一个选项卡中打开它,那就没问题了。

我不明白为什么。它如此随机地工作......例如,在我的主浏览器(chrome)中,它不会在我第一次启动时发送 cookie(正如我之前所说),但是当我更新页面时它发送一切都很好。我试图故意重复这个错误,它工作了几次然后停止了……但它在 Edge 浏览器中一直工作。 cookies 还是和以前一样,只是nuxt 就是收不到了。我没有一些特殊的 cookie 附加组件,一切都按其默认选项运行...

这是在进行某种缓存还是什么?请有人帮我解决这个问题。

原来 Nuxt Auth 模块将其 cookies expires 设置为空字符串,所以它毕竟只是基于会话的 cookies,不会根据 axios 请求发送到服务器。我必须手动将到期日期设置为 nuxt.config.js:

中的 auth 模块 cookie 设置
auth: {
  ...
  cookie: {
    options: {
      expires: new Date(new Date().getTime()+20000000000).getTime(), //thats today + a year
      maxAge: 31622400
    }
  }
},

我还是觉得不自己设置有效期是不对的。 nuxt 中所有东西的酷之处在于,许多东西都是开箱即用的,而 auth 模块不应该像 nuxt 的本机功能那样工作,而 nuxt 的本机功能很少使用。不得不为此浪费 3 个小时 :(