Как перенаправить URL браузера пользователя на другую страницу в Nodejs?
в приложении я пытаюсь написать, главная страница (http://localhost:8675) имеет следующий вид:
<form action='/?joinnew' method='post'>
<button>Start</button>
</form>
вот код на сервере.js:
http.createServer(function(request, response) {
var root = url.parse(request.url).pathname.split('/')[1];
if (root == '') {
var query = url.parse(request.url).search:
if (query == '?joinnew') {
var newRoom = getAvaliableRoomId(); // '8dn1u', 'idjh1', '8jm84', etc.
// redirect the user's web browser to a new url
// ??? How to do. Need to redirect to 'http://whateverhostthiswillbe:8675/'+newRoom
...
}}}
Я хотел бы, если бы был способ сделать это, где я не должен был знать адрес хоста, так как это может измениться.
объект 'http'является регулярным require ('http'), а не require ('express').
4 ответов:
response.writeHead(301, {Location: 'http://whateverhostthiswillbe:8675/'+newRoom} ); response.end();
OP: "я хотел бы, если бы был способ сделать это, где я не должен был знать адрес хоста..."
response.writeHead(301, { Location: "http" + (request.socket.encrypted ? "s" : "") + "://" + request.headers.host + newRoom }); response.end();
вы можете использовать метод res.render() или res.redirect() для перенаправления на другую страницу с помощью узла.JS express
например:
var bodyParser = require('body-parser'); var express = require('express'); var navigator = require('web-midi-api'); var app = express(); app.use(express.static(__dirname + '/')); app.use(bodyParser.urlencoded({extend:true})); app.engine('html', require('ejs').renderFile); app.set('view engine', 'html'); app.set('views', __dirname); app.get('/', function(req, res){ res.render("index"); }); //This reponds a post request for the login page app.post('/login', function (req, res) { console.log("Got a POST request for the login"); var data = { "email": req.body.email, "password": req.body.password }; console.log(data); //Data insertion code var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("college"); var query = { email: data.email }; dbo.collection("user").find(query).toArray(function(err, result) { if (err) throw err; console.log(result); if(result[0].password == data.password) res.redirect('dashboard.html'); else res.redirect('login-error.html'); db.close(); }); }); }); // This responds a POST request for the add user app.post('/insert', function (req, res) { console.log("Got a POST request for the add user"); var data = { "first_name" : req.body.firstName, "second_name" : req.body.secondName, "organization" : req.body.organization, "email": req.body.email, "mobile" : req.body.mobile, }; console.log(data); **res.render('success.html',{email:data.email,password:data.password});** }); //make sure that Service Workers are supported. if (navigator.serviceWorker) { navigator.serviceWorker.register('service-worker.js', {scope: '/'}) .then(function (registration) { console.log(registration); }) .catch(function (e) { console.error(e); }) } else { console.log('Service Worker is not supported in this browser.'); } // TODO add service worker code here if ('serviceWorker' in navigator) { navigator.serviceWorker .register('service-worker.js') .then(function() { console.log('Service Worker Registered'); }); } var server = app.listen(63342, function () { var host = server.address().host; var port = server.address().port; console.log("Example app listening at http://localhost:%s", port) });здесь в разделе логин, если электронная почта и пароль совпадают в базе данных, то сайт направляется в dashbaord.html в противном случае мы покажем страницу-ошибку.html с использованием метода res.redirect (). Также вы можете использовать res.render() для отображения страницы в узле.js
Comments