Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js+;express:重写url路径_Node.js_Url_Url Rewriting_Express - Fatal编程技术网

Node.js+;express:重写url路径

Node.js+;express:重写url路径,node.js,url,url-rewriting,express,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";

我想知道是否可以用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\u登录:

<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>
但是,我想知道服务器上是否存在解决方案


谢谢

我会在请求中添加一个错误,重定向到登录,然后在呈现登录页面时检查是否存在错误

.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});
})


我会在请求中添加一个错误,重定向到登录,然后在呈现登录页面时检查是否存在错误

.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});
})


我认为您应该添加更多关于您呼叫服务器的方式的信息,以及您想清楚地做什么?您想从JS调用服务器并在调用后更改url吗?我不太明白。别忘了
history
API是HTML5,所以这种方法不适用于像IE 9这样的旧浏览器。您应该看一看,除非您正在进行AJAX调用(看起来您没有),否则惯例是服务器使用res.redirect(“home.ejs”)向浏览器发送重定向,以强制更改您描述的URL。这还可以防止用户在浏览器上点击“刷新”时重新提交登录数据。我已经添加了一些有关呼叫的信息。我认为您应该添加更多关于您呼叫服务器的方式的信息,以及您希望执行的操作?您想从JS调用服务器并在调用后更改url吗?我不太明白。别忘了
history
API是HTML5,所以这种方法不适用于像IE 9这样的旧浏览器。您应该看一看,除非您正在进行AJAX调用(看起来您没有),否则惯例是服务器使用res.redirect(“home.ejs”)向浏览器发送重定向,以强制更改您描述的URL。这还可以防止用户在浏览器上点击“刷新”按钮时重新提交登录数据。我已经添加了一些有关该呼叫的信息。