我有一个带有用户注册的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和/或标题中,以便以后可以进行“授权”请求。
答案 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);
}
});
});