gpt4 book ai didi

node.js - 发布请求后重定向页面 [Express 4]

转载 作者:搜寻专家 更新时间:2023-10-31 23:34:48 25 4
gpt4 key购买 nike

/**
* @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 : How to redirect page after processing post request?但无法找出答案。

我最近将注销更改为 POST 而不是 GET。这样做之后,重定向不起作用

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 调用的重定向。 Ajax 发送一个请求,得到一个响应。 ajax 调用本身根本不会改变页面位置。这是 Ajax 调用的一个特征。

重定向在浏览器加载新页面并且服务器告诉它更改正在加载的页面到新源时起作用,而不是在浏览器仅发送 Ajax 调用时起作用。

当然,您可以使用客户端 Javascript 来决定在 $.post() 完成后从客户端重定向。您甚至可以将来自 $.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: "/"});
});

关于node.js - 发布请求后重定向页面 [Express 4],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38449568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com