web-dev-qa-db-fra.com

Dans Express, comment rediriger un utilisateur vers une URL externe?

J'ai un système de paiement utilisant node.js et braintree. Lorsque le paiement aboutit, je souhaite envoyer l'utilisateur au serveur final. Mon dos est installé ailleurs. 

J'ai essayé 

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

Donc window.location n'est évidemment pas disponible. Je n'arrive pas à trouver un moyen de rediriger un utilisateur?

24

Tu peux faire 

res.redirect('https://app.example.io');

Documents express: https://expressjs.com/fr/api.html#res.redirect

65
TheIronDeveloper

La réponse choisie ne fonctionnait pas pour moi. Il m'a redirigé vers: locahost:8080/www.google.com - ce qui est un non-sens.

301 Déplacé de façon permanente doit être inclus avec res.status(301) comme indiqué ci-dessous.

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

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

})

Vous êtes dans la même situation puisque votre back-end est ailleurs.

7
AIon

J'ai juste le même problème et je l'ai obtenu en ajoutant "suivant". J'utilise des routeurs alors peut-être que vous avez le même problème que le mien? Sans la suite, j'ai eu une erreur sur aucun moteur de rendu ... bizarre

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
Granit
    app.get("/where", (req, res) => {

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

})

Vous devez inclure le statut (301)

1
Messivert