1
我想知道是否有可能用express來重寫url。Node.js + 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: "https://stackoverflow.com/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解決方案:
window.history.pushState("", document.title, "/login");
但是,我想知道如果解決方案從服務器存在。
感謝
我想你應該添加有關你打電話給你的服務器和,也順便了解更多信息,你想做什麼清楚?你想從你的JS調用你的服務器,並在通話後更改網址?我不確定要理解。不要忘記'history'API是HTML5,所以這種方法不適用於像IE9這樣的舊瀏覽器。你應該看看[History.js](https://github.com/browserstate/history.js/) ) – RPDeshaies
除非您正在進行AJAX調用(並且您似乎不是),否則約定是服務器使用res.redirect(「home.ejs」)向瀏覽器發送重定向,以強制URL的更改描述。這也可以防止用戶在瀏覽器上刷新刷新時重新提交登錄數據。 –
我已經添加了關於該通話的一些信息。 – LOLKFC