Next.js не сохраняет куки - PullRequest
       9

Next.js не сохраняет куки

0 голосов
/ 08 февраля 2019

У меня есть приложение Next.js / Express на стороне сервера, которое взаимодействует с Django API (кросс-источник).Я вхожу в систему как пользователь:

const response = await fetch('localhost:8000/sign-in', {
                method: 'POST',
                credentials: 'include',
                body: JSON.stringify({ email, password }),
                headers: { 'Content-Type': 'application/json' },
            });
const result = await response.json();
if (response.status === 200) {
    Router.push('/account');
}

Django успешно входит в систему и возвращает set-cookie заголовки для файлов cookie csrftoken и sessionid, однако при переходе на другую страницу (например,в приведенном выше коде, когда я Router.push), куки не сохраняются.

Я предполагаю, что это как-то связано со стороной сервера и со стороны клиента, но когда в браузере установлены файлы cookie, я ожидаю, что они сохранятся независимо.

Как я могу получить эти файлы cookieпосле установки сохранить на всех страницах на стороне клиента?

1 Ответ

0 голосов
/ 09 февраля 2019

Оказывается, set-cookie - это старый способ ведения дел.Он контролируется браузером, поэтому он запутан.

В итоге я отправил csrftoken и sessionid клиенту в теле JSON и сохранил их в localStorage, используя localStorage.setItem('sessionid', 'theSessionId') и localStorage.setItem('csrftoken', 'theCsrftoken').

Затем, когда мне нужно сделать аутентифицированный запрос, я включаю их в заголовки выборки:

const response = await fetch(`${API_HOST}/logout`, {
        method: 'POST',
        headers: {
            'X-CSRFToken': localStorage.getItem('csrftoken'),
            sessionid: localStorage.getItem('sessionid'),
        },
    }); 
...