如果 axios 请求失败,则 error.response 未定义

Ale*_*sky 9 axios

如果 Vue.js 应用程序中的 axios 请求失败,我将无法访问错误(响应)状态代码。我无法弄清楚为什么在“.catch”和“axios.interceptors.response”中都未定义响应。我遵循了这条说明,该说明表明可以使用如下代码轻松访问“error.response”:

axios.interceptors.response.use(
  (response) => { 
    console.log(response);
    return response;
  },  
  (error) => {
    handleApiFail(error.response);
  });
Run Code Online (Sandbox Code Playgroud)

如果我将此代码添加到我的应用程序中的“main.js”,则在请求失败时会调用“handleApiFail”,但第二个 lambda 中未定义 error.response 并且未调用第一个 lambda。如果请求成功,则定义第一个 lambda 中的“响应”并具有状态代码。

EDIT1不是一个选项,因为我的 OPTIONS 请求不需要授权。还有各种帖子描述了相同的情况。

小智 6

我有这样的代码:

axios.interceptors.response.use(null, (error) => {
    .........
    return Promise.reject();
});
Run Code Online (Sandbox Code Playgroud)

然后,我发现我错过了在承诺拒绝中返回“错误”,更正如下:

return Promise.reject(error);
Run Code Online (Sandbox Code Playgroud)


Ale*_*sky 4

缺乏

access-control-allow-origin: *
Run Code Online (Sandbox Code Playgroud)

响应中的标头导致浏览器阻止我的请求。

添加标头可以使 axios 正常工作。

  • 这是在解决问题还是导致您提出这个问题的直接问题? (5认同)