在我的React前端上,我对Node / Express服务器进行了fetch()GET调用。节点/快速服务器检查响应是否具有特定的cookie,否则应重定向。我的代码是这样的:
反应码
componentDidMount(){
fetch('/example',{redirect: "follow"})
.then(data => data.json())
.then(res => {
//do something with response
}
})
}
节点/ Express:
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
})
需要特别注意的是,我不确定使用React-router-dom作为浏览器路由器,以为我不确定这会对服务器重定向产生什么影响。我已经搜索过,看到有人说将重定向设置为“关注”。但是,即使将status设置为3xx并将重定向设置为“ follow”,页面仍无法正确重定向。相反,它收到一个带有200 OK status
的响应(除非Node / Express实际上没有将其设置为“ 303”,否则我不知道它可能会如何更改),redirected: true
和一个响应.url指向重定向URL,但仍停留在同一页面上。我已经确定cookie不存在,不是那样。我知道我大概每次都可以检查response.redirected并手动设置window.location = response.url,但是我仍然不明白为什么重定向不起作用。那时我每次都要手动设置吗?