@@ -16,6 +16,31 @@ var enhanceError = require('../core/enhanceError');
16
16
17
17
var isHttps = / h t t p s : ? / ;
18
18
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
+
19
44
/*eslint consistent-return:0*/
20
45
module . exports = function httpAdapter ( config ) {
21
46
return new Promise ( function dispatchHttpRequest ( resolvePromise , rejectPromise ) {
@@ -145,17 +170,8 @@ module.exports = function httpAdapter(config) {
145
170
}
146
171
147
172
if ( proxy ) {
148
- options . hostname = proxy . host ;
149
- options . host = proxy . host ;
150
173
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 ) ;
159
175
}
160
176
161
177
var transport ;
0 commit comments