diff --git a/README.md b/README.md index 921133aea5..c3d16c139e 100644 --- a/README.md +++ b/README.md @@ -319,6 +319,7 @@ These are the available config options for making requests. Only the `url` is re httpsAgent: new https.Agent({ keepAlive: true }), // 'proxy' defines the hostname and port of the proxy server + // Use `false` to disable proxies, ignoring environment variables. // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and // supplies credentials. // This will set an `Proxy-Authorization` header, overwriting any existing diff --git a/lib/adapters/http.js b/lib/adapters/http.js index e48c411055..af2f59dcd1 100644 --- a/lib/adapters/http.js +++ b/lib/adapters/http.js @@ -82,7 +82,7 @@ module.exports = function httpAdapter(config) { }; var proxy = config.proxy; - if (!proxy) { + if (!proxy && proxy !== false) { var proxyEnv = protocol.slice(0, -1) + '_proxy'; var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()]; if (proxyUrl) { diff --git a/test/unit/adapters/http.js b/test/unit/adapters/http.js index ba0ecf9c76..ae8238b433 100644 --- a/test/unit/adapters/http.js +++ b/test/unit/adapters/http.js @@ -311,6 +311,23 @@ module.exports = { }); }, + testHTTPProxyDisabled: function(test) { + // set the env variable + process.env.http_proxy = 'http://does-not-exists.example.com:4242/'; + + server = http.createServer(function(req, res) { + res.setHeader('Content-Type', 'text/html; charset=UTF-8'); + res.end('123456789'); + }).listen(4444, function() { + axios.get('http://localhost:4444/', { + proxy: false + }).then(function(res) { + test.equal(res.data, '123456789', 'should not pass through proxy'); + test.done(); + }); + }); + }, + testHTTPProxyEnv: function(test) { server = http.createServer(function(req, res) { res.setHeader('Content-Type', 'text/html; charset=UTF-8');