然后Axios 400错误请求调用而不是catch

时间:2017-12-06 16:53:49

标签: javascript ajax vue.js axios

我有这个功能:

intersect

当我呼叫请求并收到400错误时,它会调用而不是catch:

enter image description here

2 个答案:

答案 0 :(得分:5)

我找到了解决方案

由于在axios拦截器中没有返回承诺而引起的问题:

axios.interceptors.response.use((response) => {
    return response;
}, (error) => {
    if (!error.response) {
        alert('NETWORK ERROR')
    } else {
        const code = error.response.status
        const response = error.response.data
        const originalRequest = error.config;

        if (code === 401 && !originalRequest._retry) {
            originalRequest._retry = true

            auth.commit('logout');
            window.location.href = "/login";
        }

        return Promise.reject(error)
    }
});

添加return Promise.reject(error)就像魅力一样

答案 1 :(得分:0)

这是旧版本Axios中有意提供的。

从v0.11开始,

validateStatus已添加到配置中。我们可以使用此选项来指定有效的状态码范围。默认情况下,有效代码为> = 200和<300。

validateStatus: function (status) {
  return status >= 200 && status < 300; // default
},

参考:https://github.com/axios/axios/issues/41#issuecomment-215100137