Как получить файлы cookie на стороне сервера в приложении Next.js

Доступ к файлам cookie во время рендеринга на стороне сервера в Next.js может быть сложнее, чем вы думаете. Вот как я это решил.

У меня была такая проблема. Мое приложение зависело отпеченьедля аутентификации и использования Next.js, по-видимому, мои файлы cookie не были установлены при инициализации первой страницы.

У меня был этот код, который отвечал за попадание в конечную точку GET с использованиемAxios:

Bookings.getInitialProps = async ctx => {
  const response = await axios.get('http://localhost:3000/api/bookings/list')

return { bookings: response.data } }

У меня был Passport.js на конечной точке на стороне сервера, но он не смог аутентифицировать пользователя на странице SSR, потому что не нашел никаких файлов cookie.

Мне пришлось изменить свой код на это, добавив файлы 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 } }

Ключом к тому, чтобы файлы cookie были доступны в серверной части, было добавление:

headers: ctx.req ? { cookie: ctx.req.headers.cookie } : undefined

в конфигурацию Axios.

Скачать мою бесплатнуюСправочник Next.js


Больше следующих руководств: