我正在做一个非常简单的PUT请求(请参阅下文。)由于某种原因,无论我从快递服务器axios发回的响应代码是200,在快递日志中,它都显示正确的响应: >
PUT /v1/org/password/reset 404 339.841 ms - 71
这是发送响应服务器端的代码行:
res.json({ message: 'Could not find user with that token or the token expired.' }).status(404);
我知道此行已被触发,因为登录到浏览器控制台的正文显示了相同的消息。查看屏幕截图。
我唯一能想到的是浏览器正在缓存响应?
axios.put(`http://localhost:3000/v1/org/password/reset`, {
password: "example",
token: "19u8e8j2039d3d32blahblah"
})
.then(function (response) {
if(response.status == 200){
console.log("success",response)
//handle success here
}
})
.catch(function (error) {
console.log("error", error);
//handle error here
});
答案 0 :(得分:2)
问题出在后端。尝试以这种方式返回响应:
res.status(404).json({ message: 'Could not find user with that token or the token expired.' });
根据Express 4文档-https://expressjs.com/en/4x/api.html
中间件功能是顺序执行的,因此顺序 中间件的包含很重要。
因此,当您调用“发送”方法时,Express将HTTP正文内容写到响应中,这就是为什么首先需要填充标头的原因。
答案 1 :(得分:2)
像这样先尝试设置状态
res.status(404).json({ message: 'Could not find user with that token or the token expired.' });