@@ -94,26 +94,12 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
9494 using var cts = CancellationTokenSource . CreateLinkedTokenSource ( timeoutCts . Token , cancellationToken ) ;
9595
9696 var ct = cts . Token ;
97-
98-
99- HttpResponseMessage ? responseMessage ;
100- // Make sure we have a cookie container if not provided in the request
101- CookieContainer cookieContainer = request . CookieContainer ??= new CookieContainer ( ) ;
10297
103- var headers = new RequestHeaders ( )
104- . AddHeaders ( request . Parameters )
105- . AddHeaders ( DefaultParameters )
106- . AddAcceptHeader ( AcceptedContentTypes )
107- . AddCookieHeaders ( url , cookieContainer )
108- . AddCookieHeaders ( url , Options . CookieContainer ) ;
98+ HttpResponseMessage ? responseMessage = null ;
99+ var cookieContainer = request . CookieContainer ??= new CookieContainer ( ) ;
109100
110- message . AddHeaders ( headers ) ;
111- if ( request . OnBeforeRequest != null ) await request . OnBeforeRequest ( message ) . ConfigureAwait ( false ) ;
112- await OnBeforeRequest ( message ) . ConfigureAwait ( false ) ;
113-
114101 try {
115102 // Make sure we have a cookie container if not provided in the request
116- var cookieContainer = request . CookieContainer ??= new CookieContainer ( ) ;
117103
118104 var headers = new RequestHeaders ( )
119105 . AddHeaders ( request . Parameters )
@@ -123,7 +109,6 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
123109 . AddCookieHeaders ( url , Options . CookieContainer ) ;
124110
125111 bool foundCookies = false ;
126- HttpResponseMessage ? responseMessage = null ;
127112
128113 do {
129114 using var requestContent = new RequestContent ( this , request ) ;
@@ -137,10 +122,12 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
137122 using var message = PrepareRequestMessage ( httpMethod , url , content , headers ) ;
138123
139124 if ( request . OnBeforeRequest != null ) await request . OnBeforeRequest ( message ) . ConfigureAwait ( false ) ;
125+ await OnBeforeRequest ( message ) . ConfigureAwait ( false ) ;
140126
141127 responseMessage = await HttpClient . SendAsync ( message , request . CompletionOption , ct ) . ConfigureAwait ( false ) ;
142128
143129 if ( request . OnAfterRequest != null ) await request . OnAfterRequest ( responseMessage ) . ConfigureAwait ( false ) ;
130+ await OnAfterRequest ( responseMessage ) . ConfigureAwait ( false ) ;
144131
145132 if ( ! IsRedirect ( Options . RedirectOptions , responseMessage ) ) {
146133 break ;
@@ -171,15 +158,17 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
171158
172159 // Disallow automatic redirection from secure to non-secure schemes
173160 // based on the option setting:
174- if ( HttpUtilities . IsSupportedSecureScheme ( requestUri . Scheme )
161+ if ( HttpUtilities . IsSupportedSecureScheme ( originalUrl . Scheme )
175162 && ! HttpUtilities . IsSupportedSecureScheme ( location . Scheme )
176163 && ! Options . RedirectOptions . FollowRedirectsToInsecure ) {
177164 // TODO: Log here...
178165 break ;
179166 }
180167
181- if ( responseMessage . StatusCode == HttpStatusCode . RedirectMethod ) {
182- // TODO: Add RedirectionOptions property for this decision:
168+ // This is the expected behavior for this status code, but
169+ // ignore it if requested from the RedirectOptions:
170+ if ( responseMessage . StatusCode == HttpStatusCode . RedirectMethod
171+ && Options . RedirectOptions . AllowRedirectMethodStatusCodeToAlterVerb ) {
183172 httpMethod = HttpMethod . Get ;
184173 }
185174
@@ -199,10 +188,8 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
199188 if ( ! Options . RedirectOptions . ForceForwardBody ) {
200189 // HttpClient RedirectHandler sets request.Content to null here:
201190 message . Content = null ;
202- // HttpClient Redirect handler also does this:
203- //if (message.Headers.TansferEncodingChunked == true) {
204- // request.Headers.TransferEncodingChunked = false;
205- //}
191+ // HttpClient Redirect handler also foribly removes
192+ // a Transfer-Encoding of chunked in this case.
206193 Parameter ? transferEncoding = request . Parameters . TryFind ( KnownHeaders . TransferEncoding ) ;
207194 if ( transferEncoding != null
208195 && transferEncoding . Type == ParameterType . HttpHeader
@@ -237,7 +224,6 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
237224 if ( request . OnAfterRequest != null ) await request . OnAfterRequest ( responseMessage ) . ConfigureAwait ( false ) ;
238225 await OnAfterRequest ( responseMessage ) . ConfigureAwait ( false ) ;
239226 return new HttpResponse ( responseMessage , url , cookieContainer , null , timeoutCts . Token ) ;
240-
241227 }
242228
243229 /// <summary>
0 commit comments