Невозможно установить заголовки после их отправки клиенту с помощью expressjs - PullRequest
0 голосов
/ 20 марта 2019

Я хочу перенаправить на другую страницу после успешного входа в систему, но он показывает мне это сообщение «Невозможно установить заголовки после того, как они отправлены клиенту», я знаю, что должен был поместить res.redirect где-то еще, но я действительно борюсь свот этот

router.get('/login',(req,res)=>{
    res.render('login')
})
router.post('/login',(req,res)=>{
    user.findOne({
        where: {
            userName : req.body.userName
        }
    })
    .then(userInfo=>{
        if(userInfo){
            if(bcrypt.compareSync(req.body.password,userInfo.password)){
                const token = jwt.sign(userInfo.dataValues,process.env.SECRET_KEY,{
                    expiresIn:1440
                })

               res.send(token)
               res.redirect('/home')

            }

            else {
                res.status(400).json({error:'user doesnt exist'})
            }


        }
    }
    )
})

1 Ответ

1 голос
/ 20 марта 2019

res.redirect - просто сахар для установки статуса перенаправления на 302 и добавления заголовка Location.Возможно, вы могли бы просто изменить это на:

res.setHeader('Location', '/home');
res.send(token);

Действительно ли res.send(token) то, что вы хотите делать?Мне кажется, что вы хотите присоединить заголовок Set-Cookie в ответе /login.Поэтому, возможно, вместо этого вы делаете:

res.setHeader('Set-Cookie', `token=${token}`);
res.redirect('/home');

Или, возможно, ваш сервер вообще не должен обрабатывать перенаправление?Если вы отправляете токен обратно клиенту, возможно, ваш клиент отвечает за присоединение токена к вашему документу cookie , а затем выполнение перенаправления на стороне клиента?

/* This code is run in the browser after you receive the token, not the server */

document.cookie = `token=${token}`;
window.location.href = '/home';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...