Reputation: 13402
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?
Upvotes: 97
Views: 173048
Reputation: 17415
Nobody mentioned this different way of redirect as an answer here, so I write it:
To permanent redirect:
res.redirect(301, 'http://app.example.io');
To temporary redirect:
res.redirect(302, 'http://app.example.io');
// OR
res.redirect('http://app.example.io');
Upvotes: 1
Reputation: 93
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.
Upvotes: -12
Reputation: 3624
You can do
res.redirect('https://app.example.io');
Express docs: https://expressjs.com/en/api.html#res.redirect
Upvotes: 215
Reputation: 123
app.get("/where", (req, res) => {
res.status(301).redirect("https://www.google.com")
})
You need to include the status (301)
Upvotes: 11
Reputation: 13071
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.
Upvotes: 28
Reputation: 314
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;
Upvotes: 2