当前位置: 首页 > 知识库问答 >
问题:

无法使用JavaScript fetch[重复]获取响应状态代码

皇甫才良
2023-03-14

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

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

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())
            });
    }

}

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

共有1个答案

长孙星汉
2023-03-14

状态代码是响应对象的status属性。此外,除非您在错误响应中使用JSON(当然有些人会这样做),否则您需要在调用JSON之前检查状态代码(或OK标志):

fetch(`${baseUrl}api/user/login`, {
    withCredentials: true,
    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(// ...

没有检查请求是否成功是一个很常见的错误,我把它写在了我的小博客上。

 类似资料:
  • 使用ApacheHttpClient 4.1。3并尝试从获取状态代码: 如何从中提取状态代码(202,404等)?或者,如果在4.1.3中还有另一种方法可以做到这一点,那它是什么? 另外,我假设完美/良好的HTTP响应是,但也希望得到确认。提前谢谢!

  • 在改版1.9中,RetrofitError仍然存在,我们可以通过以下操作获得状态: 您如何使用RXJava在Registfit2.0中做到这一点?

  • 我正在使用apache的HttpClient(通过Fluent API)。当我获得响应对象时,我首先执行以下操作: 如果状态代码为4xx或5xx,我将抛出异常,或者返回内容: 这里是类型为的对象。但当我运行此程序时,我得到: 我怎样才能避开这件事?

  • 如何从的结果中获取HTTP状态?

  • 问题内容: 调用JAX-WS端点时,如何获取HTTP响应代码? 在下面的示例代码中,在调用Web服务时可能会引发Exception,例如或。 在这种情况下,如何从HTTP响应中获取HTTP状态代码? 问题答案: 完成@Praveen答案后,您必须将变成原始值,然后从上下文中获取值。 如果您在托管的Web服务客户端中发生异常,请不要忘记将事务标记为回滚。

  • 我希望检索HTTP响应状态代码(例如,400、401、403、503等),以防请求失败(理想情况下也是成功)。在这段代码中,我使用HTTP Basic执行用户身份验证,并希望能够在用户错误键入密码时向用户发送身份验证失败的消息。 不幸的是,产生的错误似乎并不表示实际收到了HTTP状态代码409: 此外,在发生错误时检索HTTP正文会很好,因为我的服务器端将在那里放置错误的文本描述。 问题 是否可以