/**
* @api {post} /logout Logout from system
* @apiName Logout
* @apiGroup Login
*/
router.post("/logout", function (req, res) {
req.logout();
req.session.destroy();
return res.redirect("/");
});
Run Code Online (Sandbox Code Playgroud)
我读过Node.js Express:如何在处理发布请求后重定向页面?但无法弄清楚答案.
我最近将注销更改为POST而不是GET.在这样做之后,重定向不起作用
POST /logout 307 4.912 ms - 36
POST / 302 3.922 ms - 23
GET / 200 7.519 ms - -
Run Code Online (Sandbox Code Playgroud)
我可以在客户端手动执行此操作,但我想知道如何在服务器端执行此操作.这可能吗?
客户
HTML
<a href="javascript:;" onclick="logOut();">
Run Code Online (Sandbox Code Playgroud)
JS
function logOut() {
$.post("/logout");
}
Run Code Online (Sandbox Code Playgroud)
没有来自Javascript生成的Ajax调用的重定向$.post().Ajax发送请求,获得响应.ajax调用本身根本不会改变页面位置.这是Ajax调用的一个特征.
重定向在浏览器加载新页面时工作,服务器告诉它更改加载到新源的页面,而不是在浏览器发送Ajax调用时.
当然,您可以使用客户端Javascript在$.post()完成后决定从客户端重定向.您甚至$.post()可以从新位置获得响应,然后您的客户端Javascript可以设置window.location为该新URL.
function logOut() {
$.post("/logout").then(function(data) {
window.location = data.redirectUrl;
});
}
Run Code Online (Sandbox Code Playgroud)
并且,在服务器上:
router.post("/logout", function (req, res) {
req.logout();
req.session.destroy();
res.send({err: 0, redirectUrl: "/"});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5378 次 |
| 最近记录: |