In what cases an HTTP request is made but no response is received?

Viewed 12587

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 coming 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

2 Answers

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.

Related