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

Posted

技术标签:

【中文标题】如何在获取 post 调用后管理重定向请求【英文标题】:How to manage a redirect request after a fetch post call 【发布时间】:2016-08-29 10:50:31 【问题描述】:

我正在使用 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 处理重定向。

【问题讨论】:

【参考方案1】:

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

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

您是否尝试过使用护照进行用户身份验证?您可以轻松设置可以包含在所有端点中的中间件,以便在用户尚未登录时重定向每个请求。

例如:

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

然后在你的 api 中:

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

【讨论】:

以上是关于如何在获取 post 调用后管理重定向请求的主要内容,如果未能解决你的问题,请参考以下文章

httpclient 中post请求重定向

重定向,请求转发,get,post

POST请求后如何重定向到Django中的上一页

如何在 Django 2 中的 POST 方法后重定向到成功

如何使用 POST 动词重定向到页面?

如何使用 POST 动词重定向到页面?