@@ -16,6 +16,31 @@ var enhanceError = require('../core/enhanceError');
1616
1717var isHttps = / h t t p s : ? / ;
1818
19+ /**
20+ *
21+ * @param {http.ClientRequestArgs } options
22+ * @param {AxiosProxyConfig } proxy
23+ * @param {string } location
24+ */
25+ function setProxy ( options , proxy , location ) {
26+ options . hostname = proxy . host ;
27+ options . host = proxy . host ;
28+ options . port = proxy . port ;
29+ options . path = location ;
30+
31+ // Basic proxy authorization
32+ if ( proxy . auth ) {
33+ var base64 = Buffer . from ( proxy . auth . username + ':' + proxy . auth . password , 'utf8' ) . toString ( 'base64' ) ;
34+ options . headers [ 'Proxy-Authorization' ] = 'Basic ' + base64 ;
35+ }
36+
37+ // If a proxy is used, any redirects must also pass through the proxy
38+ options . beforeRedirect = function beforeRedirect ( redirection ) {
39+ redirection . headers . host = redirection . host ;
40+ setProxy ( redirection , proxy , redirection . href ) ;
41+ } ;
42+ }
43+
1944/*eslint consistent-return:0*/
2045module . exports = function httpAdapter ( config ) {
2146 return new Promise ( function dispatchHttpRequest ( resolvePromise , rejectPromise ) {
@@ -145,17 +170,8 @@ module.exports = function httpAdapter(config) {
145170 }
146171
147172 if ( proxy ) {
148- options . hostname = proxy . host ;
149- options . host = proxy . host ;
150173 options . headers . host = parsed . hostname + ( parsed . port ? ':' + parsed . port : '' ) ;
151- options . port = proxy . port ;
152- options . path = protocol + '//' + parsed . hostname + ( parsed . port ? ':' + parsed . port : '' ) + options . path ;
153-
154- // Basic proxy authorization
155- if ( proxy . auth ) {
156- var base64 = Buffer . from ( proxy . auth . username + ':' + proxy . auth . password , 'utf8' ) . toString ( 'base64' ) ;
157- options . headers [ 'Proxy-Authorization' ] = 'Basic ' + base64 ;
158- }
174+ setProxy ( options , proxy , protocol + '//' + parsed . hostname + ( parsed . port ? ':' + parsed . port : '' ) + options . path ) ;
159175 }
160176
161177 var transport ;
0 commit comments