【问题标题】:Nodejs / Express Redirect after POSTPOST后的Nodejs / Express重定向
【发布时间】:2015-09-02 10:40:50
【问题描述】:

我正在尝试将基于 PHP 的应用程序重新构建为 MEAN,并且我尝试集成一个 3rd 方支付网关,用户可以在其中输入他们的信用卡信息。

我能够使用'request' module 创建发布请求,并收到来自第三方的响应状态代码 200。现在请求已经完成,有没有办法将用户重定向到第三方站点(类似于使用 html 表单和 PHP 完成的 POST 请求)?

这是发布请求的代码块

function(req, res) {
request({
    url: 'https://urlopaymentgateway',
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    form:data,
    followAllRedirects:true
},function(error,response,body){
    if(error) {
        console.log("FAIL");
        console.log(error);
    } else {
        console.log(response.statusCode);
        /* How to do redirection here? */
    }
});
}

经过进一步阅读,followAllRedirects 仅在状态码介于 300 和 400 之间时才有效。

【问题讨论】:

标签: express payment-gateway


【解决方案1】:

我对 node 还很陌生,但这对我有用。

router.post('/some_path/', function(req, res) {
    res.status(200).send('<html><body></body><script type="text/javascript">window.location.href="/some_new_path";</script></html>');
});

【讨论】:

    【解决方案2】:

    您可以通过res.redirect()http://expressjs.com/api.html#res.redirect 进行重定向

    另外,你可能想从你的 POST 请求中获取重定向的 url,这里是它

      function(error,response,body){
        if(error) {
            console.log("FAIL");
            console.log(error);
        } else {
            console.log(response.statusCode);
            var url = response.request.href
            res.redirect(url)
        }
    

    【讨论】:

    • 感谢@vmkcom,您的回复。我也试过这个,url 是正确的,但是重定向不会通过。
    • res.redirect 没有工作?尝试通过curl 检查发送了哪些状态码,并检查您是如何发送请求的(例如通过 ajax)。 Express 只发送了 30x 的状态码用于重定向
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2021-10-22
    • 2021-12-04
    • 2017-03-23
    相关资源
    最近更新 更多