Node.js发布请求挂起

时间:2018-06-27 03:00:34

标签: node.js post request

我有一个带有用户注册的ASP.Net API后端。我尝试使用请求模块发出此发布请求,并且该请求有效(我可以看到数据已正确写入数据库),但是浏览器只是挂起,最终显示空白页面。

/* POST Register */
router.post('/register/account', function(req, res, next) {
  process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0
  request.post({
    headers: {'content-type' : 'application/json'},
    url: 'https://localhost:44338/account/register',
    body:JSON.stringify({
      "email" : req.body.email,
      "password" : req.body.psw
    }), 
    function(error, response, body) {
      console.log(body);
    }
  });
});

body应该是一个jwt生成的令牌,我在POSTMAN上测试了发布请求,它给了我200 OK的状态,甚至在令牌中显示了令牌。知道有什么问题吗?理想情况下,我想返回到索引页面,并将令牌添加到cookie和/或标题中,以便以后可以进行“授权”请求。

3 个答案:

答案 0 :(得分:0)

如果您希望进一步处理请求,则必须返回响应(使用res或致电next()。如果不这样,请求将等待(“挂起”)。

在这种情况下,应在内部HTTP请求返回时进一步处理该请求,因此请修改回调。还请考虑您的错误情况。

答案 1 :(得分:0)

在POST的回调中,您需要使用res来响应原始请求,否则它将继续挂起。 res.status(200).send("Request successful")这样简单的事情应该放在您拥有console.log(body)的部分的下面

您可以在https://expressjs.com/en/4x/api.html#res

处查看res的Express.js API参考。

答案 2 :(得分:0)

使用res.send()将响应发送到客户端浏览器。

router.post('/register/account', function(req, res, next) {
  process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0
  request.post({
    headers: {'content-type' : 'application/json'},
    url: 'https://localhost:44338/account/register',
    body:JSON.stringify({
      "email" : req.body.email,
      "password" : req.body.psw
    }), 
    function(error, response, body) {
      console.log(body);
      res.status(200).send(body);
    }
  });
});