2015-09-02 3 views
1

Я пытаюсь перестроить приложение, основанное на PHP, для MEAN, и я попытался интегрировать сторонний платежный шлюз, где пользователи могут вводить данные своей кредитной карты.Nodejs/Express Redirect после POST

Мне удалось создать почтовый запрос, используя 'request' module и получив код статуса ответа 200 от третьего лица. Теперь, когда запрос выполнен, есть способ перенаправить пользователя на сайт третьей стороны (аналогично запросу POST, выполненному с помощью html-форм и PHP)?

Вот код блока запроса пост

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.

+0

возможно дубликат [res.send(), а затем res.redirect()] (http://stackoverflow.com/questions/21439526/res-send-then-res-redirect) –

ответ

-1

Вы можете сделать редирект с помощью res.redirect(), http://expressjs.com/api.html#res.redirect

Кроме того, вы можете получить перенаправленный URL-адрес с вашего запроса POST, вот он

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) 
    } 
+0

Благодаря @vmkcom , за ваш ответ. Я тоже пробовал это, «url» правильный, но перенаправление не будет проходить. – phlat

+0

'res.redirect' не работает? Попробуйте проверить через 'curl', какой код статуса отправлен, и проверить, как вы отправляете запрос (например, через ajax). Экспресс отправляет только код статуса 30x для перенаправления – vmkcom

1

Я довольно новичок в узле, но это работает для меня.

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>'); 
}); 
Смежные вопросы