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.
我有这个问题。 我的应用程序依赖Cookie进行身份验证,显然使用Next.js时,我的Cookie并未在首页初始化时设置。
I had this code, which was in charge of hitting a GET endpoint using Axios:
我有这段代码,它负责使用Axios命中GET端点:
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.
我在服务器端端点上具有Passport.js,但由于未找到任何cookie,因此未能在SSR页面上对用户进行身份验证。
I had to change my code to this, adding the cookies to the headers
:
我必须将代码更改为此,将cookie添加到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:
在后端使cookie可用的关键是添加:
headers: ctx.req ? { cookie: ctx.req.headers.cookie } : undefined
to the Axios configuration.
到Axios配置。