<!-- Click "Preview" for a more readable version --

Please read and follow the instructions before submitting an issue:

- Read all our documentation, especially the [README](https://github.com/axios/axios/blob/master/README.md). It may contain information that helps you solve your issue.
- Ensure your issue isn't already [reported](https://github.com/axios/axios/issues?utf8=%E2%9C%93&q=is%3Aissue).
- If you aren't sure that the issue is caused by Axios or you just need help, please use [Stack Overflow](https://stackoverflow.com/questions/tagged/axios) or [our chat](https://gitter.im/mzabriskie/axios).
- If you're reporting a bug, ensure it isn't already fixed in the latest Axios version.
- Don't remove any title of the issue template, or it will be treated as invalid by the bot.

⚠️👆 Feel free to these instructions before submitting the issue 👆⚠️
-->

#### Describe the bug
In cases where `axios` is used by servers to perform http requests to user-supplied urls, a proxy is commonly used to protect internal networks from unauthorized access and [SSRF](https://en.wikipedia.org/wiki/Server-side_request_forgery). This bug enables an attacker to bypass the proxy by providing a url that responds with a redirect to a restricted host/ip.

#### To Reproduce
The following code spawns a proxy server that *always* responds with a 302 redirect, so requests should never reach the target url, however, `axios` is only reaching the proxy once, and bypassing the proxy after the redirect response. 

https://runkit.com/embed/1df5qy8lbgnc
```js
const axios = require('axios')
const http = require('http')

const PROXY_PORT = 8080

// A fake proxy server
http.createServer(function (req, res) { 
    res.writeHead(302, {location: 'http://example.com'})
    res.end()
  }).listen(PROXY_PORT)

axios({
  method: "get",
  url: "http://www.google.com/",
  proxy: {
    host: "localhost",
    port: PROXY_PORT,
  },
})
.then((r) => console.log(r.data))
.catch(console.error)
```

The response is the rendered html of _http://example.com_

#### Expected behavior
*All* the requests should pass via the proxy. In the provided scenario, there should be a redirect loop.

#### Environment
 - Axios Version [0.21.0]
 - Node.js Version [v12.18.2]

#### Additional context/Screenshots
Add any other context about the problem here. If applicable, add screenshots to help explain.

lib/adapters/http.js
} else if (utils.isString(data)) {
        data = Buffer.from(data, 'utf-8');
      } else {
        return reject(createError(
          'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',
          config
        ));
      }
      
      headers['Content-Length'] = data.length;
    }
    
    var auth = undefined;
    if (config.auth) {
      var username = config.auth.username || '';
      var password = config.auth.password || '';
      auth = username + ':' + password;
    }
    
    var fullPath = buildFullPath(config.baseURL, config.url);
    var parsed = url.parse(fullPath);
    var protocol = parsed.protocol || 'http:';
    if (!auth && parsed.auth) {
      var urlAuth = parsed.auth.split(':');
      var urlUsername = urlAuth[0] || '';
      var urlPassword = urlAuth[1] || '';
      auth = urlUsername + ':' + urlPassword;
    }
    if (auth) {
      delete headers.Authorization;