如何在fetch post调用后管理重定向请求

How to manage a redirect request after a fetch post call

本文关键字:管理 重定向 请求 调用 post fetch      更新时间:2023-09-26

我正在使用fetch与节点服务器(Express)通信。我正在建一个SPA。每次向服务器发出请求时,我都会检查会话是否有效。如果会话无效,我将从节点重定向到登录页面。问题是。如果会话无效(例如:在没有页面刷新的情况下在后台运行get/post请求),则请求将以静默方式失败。它没有被重定向。

对于ajax请求,我也遇到了同样的问题。我所做的是检查请求是xhr并接受json。然后发送一个json响应并在前端处理重定向。

if (req.xhr && req.accepts('json')) {
  res.json({status:'session_timeout'});
}else{
  res.redirect('/login');
}

我怎么能用fetch来做同样的事情呢。如何使用fetch和node处理重定向。

我不确定您的代码是如何确定会话是否有效的。看起来您正在测试该请求是否是您从浏览器发送的请求,如果是,则使用json进行响应。

在这种情况下,什么时候会触发重定向?如果您总是从浏览器发送请求,它将永远不会发送到重定向语句。

您是否尝试过使用passport进行用户身份验证?很容易设置可以包含在所有端点中的中间件,这样,如果用户还没有登录,每个请求都会被重定向

例如:

function isLoggedIn(req, res, next) {
    if (req.isAuthenticated())
        return next();
    res.redirect('/');
}

然后在你的api中:

app.get('/yourendpoint', isLoggedIn, function(req, res) {
    /*response here*/
    });
});