提取/反应未使用Node / Express res.redirect()进行重定向

时间:2019-02-23 00:47:05

标签: node.js reactjs express react-router fetch

在我的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,但是我仍然不明白为什么重定向不起作用。那时我每次都要手动设置吗?

0 个答案:

没有答案