Node.js + express:重写urlpath

我想知道是否有可能用express来重写url。

我其实有这个代码:

var http, express, app; http = require("http"); express = require("express"); app = express(); app.use(express.json()) app.use(express.urlencoded()) .post("/ajax_login", function (req, res) { "use strict"; http.get({ host: "localhost", port: 8080, path: "/users/" + req.body.email + "/email" }, function (resp) { resp.setEncoding("utf8"); resp.on("data", function (data) { json = JSON.parse(data); if (json.password.password === sha1(req.body.password)) { res.render("home.ejs"); } else { res.render("login.ejs", { email : req.body.email, error : "password is not good" }); } }); }); }) .get("/login", function (req, res) { "use strict"; res.render("login.ejs"); }) .listen(3030); 

我从表单调用/ ajax_login:

 <form method="post" action="/ajax_login"> <div class="form-group"> <label for="email">Email address</label> <input type="email" class="form-control" id="email" name="email" /> </div> <div class="form-group"> <label for="password">Password</label> <input type="password" class="form-control" id="password" name="password" /> </div> <button type="submit" class="btn btn-primary">Connection</button> </form> 

问题是:当我调用/ ajax_login时,在res.render之后,我的浏览器上的HTML代码被更改,但url仍然是/ ajax_login。

我怎样才能改变这个url?

我知道的JavaScript解决scheme:

 window.history.pushState("", document.title, "/login"); 

但是,我想知道是否存在从服务器的解决scheme。

谢谢

我会向请求本地添加一个错误,redirect到login,然后检查呈现login页面时是否存在错误。

 .post("/ajax_login", function (req, res) { "use strict"; ... if (password && email IS OK) { res.locals.errorMSG = "password is not good"; res.redirect("/login"); //redirect vs render } else { res.render("home.ejs"); } }) .get("/login", function (req, res) { "use strict"; res.render("login.ejs", {error: res.locals.errorMSG || null}); }) 

res.locals

res.redirect