请求后redirect页面

/** * @api {post} /logout Logout from system * @apiName Logout * @apiGroup Login */ router.post("/logout", function (req, res) { req.logout(); req.session.destroy(); return res.redirect("/"); }); 

我已经阅读了Node.js Express:处理post请求后如何redirect页面? 但无法弄清楚答案。

我最近更改注销而不是GET。 这样做后,redirect不起作用

 POST /logout 307 4.912 ms - 36 POST / 302 3.922 ms - 23 GET / 200 7.519 ms - - 

我可以手动在客户端做,但我想知道如何在服务器端做到这一点。 这可能吗?

客户

HTML

 <a href="javascript:;" onclick="logOut();"> 

JS

  function logOut() { $.post("/logout"); } 

$.post()是一个Javascript生成的Ajax调用没有redirect。 Ajax发送一个请求,得到一个响应。 一个Ajax调用本身并不会改变页面的位置。 这是Ajax调用的一个特点。

当浏览器加载一个新页面时,redirect工作,服务器告诉它将要加载的页面更改为新的源代码,而不是在浏览器发送Ajax调用时。

当然,您可以使用您的客户端JavaScript来决定在$.post()完成后从客户端redirect。 您甚至可以将$.post()的响应作为新的位置,然后您的客户端Javascript可以将window.location设置为新的URL。

 function logOut() { $.post("/logout").then(function(data) { window.location = data.redirectUrl; }); } 

而且,在服务器上:

 router.post("/logout", function (req, res) { req.logout(); req.session.destroy(); res.send({err: 0, redirectUrl: "/"}); });