In express how do I redirect a user to an external url?

node.jsExpressRoutes

node.js Problem Overview


I have a payment system using node.js and braintree, when the payment is successful I want to send the user to the back end. My back end is setup elsewhere.

I have tried

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

So window.location is obviously not available. I cant think of any ways to redirect a user?

node.js Solutions


Solution 1 - node.js

You can do

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

Express docs: https://expressjs.com/en/api.html#res.redirect

Solution 2 - node.js

The selected answer did not work for me. It was redirecting me to: locahost:8080/www.google.com - which is nonsense.

301 Moved Permanently needs to be included with res.status(301) as seen below.

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

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

})

You are in the same situation since your back-end is elsewhere.

Solution 3 - node.js

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

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

})

You need to include the status (301)

Solution 4 - node.js

I just have the same issue and got it work by adding "next". I use routers so maybe you have same issue as mine? Without next, i got error about no render engine...weird

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;

Solution 5 - node.js

redirect a user to an external URL is pretty simple.

res.redirect('enter the URL here');

Solution 6 - node.js

use this instead u can simply get redirected:

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

make sure to add on the https the rest of the status is not required which is said nonsense by username: @AIon :)

Solution 7 - node.js

None of these worked for me, so I tricked the receiving client with the following result:

res.status(200).send('<script>window.location.href="https://your external ref"</script>');

Some will say if noscript is on this does not work, but really which site does not use it.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMichael Joseph AubryView Question on Stackoverflow
Solution 1 - node.jsTheIronDeveloperView Answer on Stackoverflow
Solution 2 - node.jsAIonView Answer on Stackoverflow
Solution 3 - node.jsMessivertView Answer on Stackoverflow
Solution 4 - node.jsGranitView Answer on Stackoverflow
Solution 5 - node.jsKalhara Randil TennakoonView Answer on Stackoverflow
Solution 6 - node.jsKiran Sai GanugulaView Answer on Stackoverflow
Solution 7 - node.jsuser2056154View Answer on Stackoverflow