Node.js + Express : rewrite url path

标签 node.js url url-rewriting express

我想知道是否可以用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。

如何更改此网址?

我知道 JavaScript 解决方案:

window.history.pushState("", document.title, "/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

关于Node.js + Express : rewrite url path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21712651/

相关文章:

javascript - javascript中匿名对象的生命周期

php - .htaccess 多 URL 重写

javascript - 在 React/JS 中打印当前 URL

url - PrestaShop $link -> getProductLink($product) 给出了错误的 URL

apache - 如何停止重写规则?

javascript - 如何遍历请求正文中的对象数组

node.js - 如何在 Node.js 中处理大量文件和流?

node.js - 使用服务器端渲染的 React 应用程序会因负载而崩溃

php - 使用 codeigniter 在 URL 中传递多个变量

authentication - 带重写的 nginx 反向代理后面的 Piwik 配置