Published Dec 06 2019
I had this problem. My app depended on cookies for authentication, and using Next.js apparently my cookies were not set on first page initialization.
I had this code, which was in charge of hitting a GET endpoint using Axios:
Bookings.getInitialProps = async ctx => {
const response = await axios.get('http://localhost:3000/api/bookings/list')
return {
bookings: response.data
}
}
I had Passport.js on the server side endpoint, but it failed to authenticate the user on the SSR page, because it didn’t find any cookie.
I had to change my code to this, adding the cookies to the headers
:
Bookings.getInitialProps = async ctx => {
const response = await axios({
method: 'get',
url: 'http://localhost:3000/api/bookings/list',
headers: ctx.req ? { cookie: ctx.req.headers.cookie } : undefined
})
return {
bookings: response.data
}
}
The key to making cookies available in the backend was adding:
headers: ctx.req ? { cookie: ctx.req.headers.cookie } : undefined
to the Axios configuration.
I wrote an entire book on this topic 👇
© 2023 Flavio Copes
using
Notion to Site.
Follow on Twitter
Solopreneur? Wannabe? Adventure awaits