Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

nuxtServerInit not receiving cookies

What I am trying to achieve

The basic idea is to send a user to another route when a cookie is received in the Nuxt router middleware.

The middleware is always called both on server-side and client-side, and it works perfectly in the dev environment.

The problem that happens only in production is that the server-side middleware never receives the cookie.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel


My attempt

The logic is simple: nuxtServerInit is called on the server before the router middleware is called. So it gets the cookie from the user and saves it in Vuex:

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

Then, the router middleware is called and checks Vuex if the cookie is there to redirect the user:

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

Everything works perfectly fine locally, but upon deployment no redirection happens.
What am I missing?


More info

As that may be relevant, I am using a firebase cloud function to host my Nuxt ssr website:

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);
});

I first thought it may be a cookie problem, but I tried setting them up with vanilla js, then (as implemented above) I tried cookie-universal-nuxt, as well as bypassing Vuex completely and checking the req.headers.cookie directly in the middleware. The result is always the same: works in dev, does not work in production.

>Solution :

Try to change the name of your cookie to __session.

You can find more info in this question.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading