У меня проблема с настройкой файлов cookie через express. Я использую Este.js dev stack
и я пытаюсь установить cookie в API auth /login
route. Вот код, который я использую в /api/v1/auth/login
route
res.cookie('token', jwt.token, {expires: new Date(Date.now() + 9999999)});
res.status(200).send({user, token: jwt.token});
В src/server/main.js
я зарегистрировал cookie-parser
как первое промежуточное программное обеспечение
app.use(cookieParser());
Заголовок ответа для маршрута /api/v1/auth/login
содержит
Set-Cookie:token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ..
но cookie не сохраняется в браузере (document.cookie
пуст, а также Resources - Cookies
вкладка Resources - Cookies
в инструментах develepoers пуста) :(
EDIT: Я обнаружил, что когда я вызываю это в /api/v1/auth/login
(без вызова res.send
или res.json
)
res.cookie('token', jwt.token, {expires: new Date(Date.now() + 9999999), httpOnly: false});
next();
то cookie установлен. И заголовок ответа имеет X-Powered-By:Este.js
... это устанавливает esteMiddleware
в esteMiddleware
frontend esteMiddleware
part.
Когда я использую res.send
res.cookie('token', jwt.token, {expires: new Date(Date.now() + 9999999), httpOnly: false}).send({user, token: jwt.token});'
next();
то я получаю ошибку Can't set headers after they are sent.
потому что используется метод send
, поэтому frontend render throw this error.
Но я должен отправить данные из API, так как я могу справиться с этим?
Может кто-нибудь мне помочь? Благодарю!