nuxtServerInit 没有收到 cookie

nuxtServerInit not receiving cookies

我想要达到的目标

基本思想是在 Nuxt 路由器中间件中收到 cookie 时将用户发送到另一条路由

中间件始终在服务器端和客户端调用,并且在开发环境中完美运行。

只在生产中发生的问题是服务器端中间件永远不会收到cookie。


我的尝试

逻辑很简单:nuxtServerInit 在服务器上调用 before 路由器中间件被调用。所以它从用户那里获取cookie并将其保存在Vuex中:

nuxtServerInit({ commit }, { req }) {
  const token = this.$cookies.get('test');
  commit('auth/setToken', { value: !!token}) }
}

然后,调用路由器中间件并检查 Vuex 是否存在用于重定向用户的 cookie:

export default function ({ store, route, redirect }) {
  if (route.path === '/' && store.getters['auth/getToken']) { redirect('/test'); }
}

在本地一切正常,但在部署时没有重定向发生。
我错过了什么?


更多信息

可能相关,我正在使用 firebase 云功能来托管我的 Nuxt ssr 网站:

exports.renderApp = functions.https.onRequest(async (req, res) => {
  res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
  await nuxt.ready(); nuxt.render(req, res);
});

我首先认为这可能是 cookie 问题,但我尝试使用 vanilla js 设置它们,然后(如上实现)我尝试 cookie-universal-nuxt,以及完全绕过 Vuex 并检查 req.headers.cookie直接在中间件中。结果总是一样的:在开发中有效,在生产中无效。

尝试将您的 cookie 名称更改为 __session

您可以在 中找到更多信息。