如何将用户重定向到外部 URL?

我有一个使用 node.js 和 braintree 的支付系统,当支付成功时,我希望将用户发送到后端。我的后端设置在其他地方。

我试过了

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

所以 window.location 显然不可用。我想不出任何重定向用户的方法?

141672 次浏览

You can do

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

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

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;

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.

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


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


})

You need to include the status (301)

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.