@@ -89,16 +89,16 @@ public Protocol(ChannelManager channelManager, AsyncHttpClientConfig config, Net
89
89
90
90
private FluentCaseInsensitiveStringsMap propagatedHeaders (Request request , Realm realm , boolean switchToGet ) {
91
91
92
- FluentCaseInsensitiveStringsMap originalHeaders = request .getHeaders ();
93
- originalHeaders . remove ( HOST );
94
- originalHeaders . remove ( CONTENT_LENGTH );
95
- if ( switchToGet )
96
- originalHeaders . remove ( CONTENT_TYPE );
92
+ FluentCaseInsensitiveStringsMap headers = request .getHeaders ()//
93
+ . delete ( HttpHeaders . Names . HOST )//
94
+ . delete ( HttpHeaders . Names . CONTENT_LENGTH )//
95
+ . delete ( HttpHeaders . Names . CONTENT_TYPE );
96
+
97
97
if (realm != null && realm .getScheme () == AuthScheme .NTLM ) {
98
- originalHeaders . remove (AUTHORIZATION );
99
- originalHeaders . remove (PROXY_AUTHORIZATION );
98
+ headers . delete (AUTHORIZATION )//
99
+ . delete (PROXY_AUTHORIZATION );
100
100
}
101
- return originalHeaders ;
101
+ return headers ;
102
102
}
103
103
104
104
protected boolean exitAfterHandlingRedirect (//
@@ -122,13 +122,18 @@ protected boolean exitAfterHandlingRedirect(//
122
122
Uri uri = Uri .create (future .getUri (), location );
123
123
124
124
if (!uri .equals (future .getUri ())) {
125
- final RequestBuilder requestBuilder = new RequestBuilder (future .getRequest ());
126
-
127
- // if we are to strictly handle 302, we should keep the original method (which browsers don't)
128
- // 303 must force GET
129
- boolean switchToGet = !request .getMethod ().equals ("GET" ) && (statusCode == 303 || (statusCode == 302 && !config .isStrict302Handling ()));
130
- if (switchToGet )
131
- requestBuilder .setMethod ("GET" );
125
+ String originalMethod = request .getMethod ();
126
+ boolean switchToGet = !originalMethod .equals ("GET" ) && (statusCode == 303 || (statusCode == 302 && !config .isStrict302Handling ()));
127
+
128
+ final RequestBuilder requestBuilder = new RequestBuilder (switchToGet ? "GET" : originalMethod )//
129
+ .setConnectionPoolKeyStrategy (request .getConnectionPoolPartitioning ())//
130
+ .setInetAddress (request .getInetAddress ())//
131
+ .setLocalInetAddress (request .getLocalAddress ())//
132
+ .setVirtualHost (request .getVirtualHost ())//
133
+ .setProxyServer (request .getProxyServer ())//
134
+ .setRealm (request .getRealm ());
135
+
136
+ requestBuilder .setHeaders (propagatedHeaders (request , realm , switchToGet ));
132
137
133
138
// in case of a redirect from HTTP to HTTPS, future attributes might change
134
139
final boolean initialConnectionKeepAlive = future .isKeepAlive ();
0 commit comments