gpt4 book ai didi

javascript - 无法使用 JavaScript fetch 获取响应状态代码

转载 作者:行者123 更新时间:2023-12-03 13:32:38 25 4
gpt4 key购买 nike

我正在尝试创建一个登录表单。当我用 Postman 测试服务时,我会得到一个带有状态代码等的 body 对象。

Postman Result

但是,使用 JavaScript fetch,我无法获取 body 对象,并且刚刚收到一个错误:

fetch console log

export const login = (username,password) => {
return dispatch=>{
const basicAuth = 'Basic ' + btoa(username + ':' + password);
let myHeaders = new Headers();
myHeaders.append('Authorization', basicAuth);
myHeaders.append('Content-Type', 'application/json');
fetch(`${baseUrl}api/user/login`, {
withCredentials: true,
headers: myHeaders
})
.then(function (response) {
return response.json();
})
.then(function (json) {
dispatch(setLoginInfo(json))
})
.catch(err =>{
console.log(err)
dispatch(loginFailed())
});
}

}

我需要在获取中获取状态代码。

最佳答案

状态代码是status响应对象上的属性。另外,除非您在 error 响应中使用 JSON(当然,有些人会这样做),否则您需要在调用 json< 之前检查状态代码(或 ok flag )/:

fetch(`${baseUrl}api/user/login`, {
credentials: "include", // ¹ See note below
headers: myHeaders
})
.then(function(response) {
console.log(response.status); // Will show you the status
if (!response.ok) {
throw new Error("HTTP status " + response.status);
}
return response.json();
})
.then(// ...

不检查请求是否成功是一个常见的错误,我 wrote it up on my anemic old blog .

<小时/>

¹ 您有 withCredentials: true,但是 the documentation说它是凭据:“include”。 (感谢 aderchox 指出这一点。)

关于javascript - 无法使用 JavaScript fetch 获取响应状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54900971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com