admin管理员组

文章数量:1291743

I am using axios to make an HTTP request and getting an error. This is a snippet from axios docs talking about handling of errors.

axios.get('/user/12345')
  .catch(function (error) {
    if (error.response) {
      // The request was made and the server responded with a status code
      // that falls out of the range of 2xx
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      // The request was made but no response was received
      // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
      // http.ClientRequest in node.js
      console.log(error.request);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log('Error', error.message);
    }
    console.log(error.config);
  });

I am using axios to make an HTTP request and getting an error. This is a snippet from axios docs talking about handling of errors.

axios.get('/user/12345')
  .catch(function (error) {
    if (error.response) {
      // The request was made and the server responded with a status code
      // that falls out of the range of 2xx
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      // The request was made but no response was received
      // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
      // http.ClientRequest in node.js
      console.log(error.request);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log('Error', error.message);
    }
    console.log(error.config);
  });

In my case, error.request is ing out to be true, which means (according to the docs) a request was made but no response was received. My question is, what could be causing it? what are the cases when a request is made but no response is received?

Thanks

Share Improve this question asked Sep 16, 2018 at 11:26 Muhammad SaqibMuhammad Saqib 1,1173 gold badges13 silver badges18 bronze badges 2
  • My first instinct would be that the server sent no response. If it's under your control then see if not misconfigured or if it doesn't have a bug in the endpoint logic. – VLAZ Commented Sep 16, 2018 at 11:31
  • It is unfortunately not under my control, I am talking with an API provided by another pany. – Muhammad Saqib Commented Sep 16, 2018 at 11:34
Add a ment  | 

2 Answers 2

Reset to default 3

It often happens for two reasons:

1. OPTIONS request is failed

Top reasons in my practice:

  • server checks authorisation on OPTIONS request

  • server sends wrong headers

  • server make some redirect

More about OPTIONS requests

2. Network problems

I saw this a lot in corporate networks with a lot of firewalls. If there is no way to fix network issues then aggressive retries usually helps.

if (err && err.request && !err.response && navigator.onLine !== false) {
  // try again ...
}

The only way you get a .catch() if no response was returned from the API endpoint is if Axios (or the host system that Axios is running on) implemented a timeout and no response was received within that timeout period. So, without seeing more info on the specific request you're making and the specific API, it appears that there are two possibilities here:

  1. Your API endpoint has a bug and does not send a response in some circumstances.
  2. Your API endpoint is taking a long time to send the response and the Axios library is timing out before the response arrives.

You could significantly increase the timeout value for your axios call to test if #2 is what is happening.

本文标签: javascriptIn what cases an HTTP request is made but no response is receivedStack Overflow