В моем React-интерфейсе я выполняю вызов fetch () на мой сервер Node / Express.Сервер Node / Express проверяет, есть ли в ответе определенный файл cookie, и, если нет, следует перенаправить его.Мой код выглядит примерно так:
Код реагирования
componentDidMount(){
fetch('/example',{redirect: "follow"})
.then(data => data.json())
.then(res => {
//do something with response
}
})
}
Узел / Экспресс:
router.use((req, res, next) => {
let { token } = req.cookies;
if(token){
next();
}
else{
res.redirect(303, '/login');
}
});
router.get('/example', (req, res) =>{
//sends a json response back
})
Может быть важно отметить, что я использую реагирующий маршрутизатор-dom как маршрутизатор браузера, думал, что я не уверен, что это делает с перенаправлениями сервера.Я искал и видел людей, которые сказали, чтобы установить перенаправление, чтобы "следовать".Однако, даже если установить статус 3xx и установить перенаправление на «follow», страница все равно не будет перенаправлена правильно.Вместо этого он получает ответ с 200 OK status
(который я не понимаю, как это могло измениться, если Node / Express фактически не установил его на «303»), redirected: true
и response.url, указывающий наURL перенаправления, но все еще остается на той же странице.Я удостоверился, что куки там нет, так что это не так.Я знаю, что, возможно, могу каждый раз проверять response.redirected и вручную устанавливать window.location = response.url, но я до сих пор не понимаю, почему не сработал редирект.Нужно ли устанавливать его каждый раз вручную?