2015-02-05 14 views
16

Ho un sistema di pagamento che utilizza node.js e braintree, quando il pagamento va a buon fine, voglio inviare l'utente al back-end. Il mio back-end è configurato altrove.In express come faccio a reindirizzare un utente a un URL esterno?

ho cercato

res.writeHead(301, 
    {Location: 'http://app.example.io'} 
); 
res.end(); 

Quindi window.location non è ovviamente disponibile. Non riesco a pensare ad alcun modo per reindirizzare un utente?

risposta

31

Si può fare res.redirect('http://app.example.io');

docs espresso: http://expressjs.com/api.html#res.redirect

+0

L'ho provato prima ma non penso che abbia funzionato provandolo di nuovo. –

+2

Reindirizza a '/' –

+0

L'ho appena testato su un'app personale e viene reindirizzato correttamente. Domanda: quale versione di express stai usando? La versione – TheIronDeveloper

1

mi resta che lo stesso problema, ma ho farlo funzionare con l'aggiunta di "next". Io uso i router quindi forse hai lo stesso problema del mio? Senza il prossimo, ho avuto un errore su nessun motore di rendering ... strano

var express = require('express'); 
var router = express.Router(); 
var debug = require('debug')('node_blog:server'); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    debug("index debug"); 
    res.render('index.html', { title: 'Express' }); 
}); 

router.post("/", function (req, res, next) { 
    //var pass = req.body("password"); 
    //var loginx = req.body("login"); 
    //res.render('index.html', { title: 'Express' }); 
    res.redirect("/users") 
    next 
}); 

module.exports = router; 
2

La risposta selezionata non ha funzionato per me. Mi stava reindirizzando a: locahost:8080/www.google.com - che è una sciocchezza.

301 Moved Permanently deve essere incluso con res.status(301) come indicato di seguito.

app.get("/where", (req, res) => { 

    res.status(301).redirect("https://www.google.com") 

}) 

Sei nella stessa situazione dal momento che il tuo back-end è altrove.

Problemi correlati