web-dev-qa-db-ja.com

明示的にユーザーを外部URLにリダイレクトするにはどうすればよいですか?

Node.jsとbraintreeを使用した支払いシステムがあり、支払いが成功したら、ユーザーをバックエンドに送りたいと思います。私のバックエンドは別の場所にセットアップされています。

私が試してみました

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

したがって、window.locationは明らかに使用できません。ユーザーをリダイレクトする方法は考えられませんか?

28

できるよ

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

Expressドキュメント: https://expressjs.com/en/api.html#res.redirect

83

選択した答えは私にはうまくいきませんでした。リダイレクト先:_locahost:8080/www.google.com_-これはナンセンスです。

1 Moved Permanently は、以下に示すようにres.status(301)に含める必要があります。

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

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

})
_

バックエンドが他の場所にあるため、同じ状況にあります。

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

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

})

ステータスを含める必要があります(301)

3
Messivert

私は同じ問題を抱えていて、「次」を追加することで機能しました。私はルーターを使用しているので、おそらくあなたは私のと同じ問題を抱えていますか?次がないと、レンダリングエンジンがないというエラーが表示されます...

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