You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2019/12/20 09:49:14 UTC
[httpcomponents-client] 01/01: HTTPCLIENT-2040: Copy headers from
the original request to the redirect request
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch HTTPCLIENT-2040
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git
commit fa1a8d240bb3283cbbd1d7b12c0c868a67d3fa3a
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Fri Dec 20 10:40:54 2019 +0100
HTTPCLIENT-2040: Copy headers from the original request to the redirect request
---
.../apache/hc/client5/http/impl/async/AsyncRedirectExec.java | 12 ++++++------
.../apache/hc/client5/http/impl/classic/RedirectExec.java | 7 ++-----
2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/AsyncRedirectExec.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/AsyncRedirectExec.java
index c8ad47d..53d5b7e 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/AsyncRedirectExec.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/AsyncRedirectExec.java
@@ -138,20 +138,20 @@ public final class AsyncRedirectExec implements AsyncExecChainHandler {
final int statusCode = response.getCode();
+ state.currentRequest = null;
switch (statusCode) {
case HttpStatus.SC_MOVED_PERMANENTLY:
case HttpStatus.SC_MOVED_TEMPORARILY:
case HttpStatus.SC_SEE_OTHER:
if (!Methods.isSafe(request.getMethod())) {
- final HttpRequest httpGet = new BasicHttpRequest(Methods.GET, redirectUri);
- httpGet.setHeaders(scope.originalRequest.getHeaders());
- state.currentRequest = httpGet;
+ state.currentRequest = new BasicHttpRequest(Methods.GET, redirectUri);
state.currentEntityProducer = null;
- break;
}
- default:
- state.currentRequest = new BasicHttpRequest(request.getMethod(), redirectUri);
}
+ if (state.currentRequest == null) {
+ state.currentRequest = new BasicHttpRequest(request.getMethod(), redirectUri);
+ }
+ state.currentRequest.setHeaders(scope.originalRequest.getHeaders());
final HttpHost newTarget = URIUtils.extractHost(redirectUri);
if (newTarget == null) {
throw new ProtocolException("Redirect URI does not specify a valid host name: " + redirectUri);
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/RedirectExec.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/RedirectExec.java
index 025d9f2..d2503e6 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/RedirectExec.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/RedirectExec.java
@@ -147,17 +147,14 @@ public final class RedirectExec implements ExecChainHandler {
case HttpStatus.SC_MOVED_TEMPORARILY:
case HttpStatus.SC_SEE_OTHER:
if (!Methods.isSafe(request.getMethod())) {
- final HttpGet httpGet = new HttpGet(redirectUri);
- httpGet.setHeaders(originalRequest.getHeaders());
- redirect = httpGet;
- } else {
- redirect = null;
+ redirect = new HttpGet(redirectUri);
}
}
if (redirect == null) {
redirect = new BasicClassicHttpRequest(originalRequest.getMethod(), redirectUri);
redirect.setEntity(originalRequest.getEntity());
}
+ redirect.setHeaders(originalRequest.getHeaders());
final HttpHost newTarget = URIUtils.extractHost(redirectUri);
if (newTarget == null) {