请求后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: "/"}); });