In der Anwendung, die ich zu schreiben versuche, hat die Hauptseite ( http: // localhost: 8675 ) die folgende Form:
<form action='/?joinnew' method='post'>
<button>Start</button>
</form>
Hier ist der Code in server.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
...
}}}
Ich würde es lieben, wenn es einen Weg gäbe, wo ich die Hostadresse nicht kennen müsste, da sich dies ändern könnte.
Das 'http'-Objekt ist eine reguläre Anforderung (' http '), NICHT erforderlich (' express ').
Antworten:
response.writeHead(301, {Location: 'http://whateverhostthiswillbe:8675/'+newRoom} ); response.end();
quelle
response.writeHead(301, { Location: '/path' });
ohne die vollständige URL verwenden, was nützlich ist, wenn Sie den Hostnamen oder das Protokoll vorher nicht kennen.Für diejenigen, die (im Gegensatz zu OP) die Express- Bibliothek verwenden:
http.get('*',function(req,res){ res.redirect('http://exmple.com'+req.url) })
quelle
OP: "Ich würde es lieben, wenn es einen Weg gäbe, wo ich die Hostadresse nicht kennen müsste ..."
response.writeHead(301, { Location: "http" + (request.socket.encrypted ? "s" : "") + "://" + request.headers.host + newRoom }); response.end();
quelle
In Express können Sie verwenden
res.redirect('http://example.com');
Benutzer vom Server umleiten.
Um einen Statuscode 301 oder 302 aufzunehmen, kann dieser verwendet werden
res.redirect(301, 'http://example.com');
quelle
Wenn Sie verwenden
Express
, ist die sauberste vollständige Antwort diesconst express = require('express') const app = express() app.get('*', (req, res) => { // REDIRECT goes here res.redirect('https://www.YOUR_URL.com/') }) app.set('port', (process.env.PORT || 3000)) const server = app.listen(app.get('port'), () => {})
quelle
Sie können die Methoden res.render () oder res.redirect () verwenden, um mit node.js express auf eine andere Seite umzuleiten
Z.B:
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) });
Hier im Anmeldeabschnitt: Wenn die E-Mail-Adresse und das Kennwort in der Datenbank übereinstimmen, wird die Site an dashbaord.html weitergeleitet. Andernfalls wird page-error.html mit der Methode res.redirect () angezeigt. Sie können auch res.render () verwenden, um eine Seite in node.js zu rendern
quelle