V. S. created HTTPCLIENT-2355:
---------------------------------
Summary: Error "Chunked transfer encoding not allowed for
HTTP/1.0" with proxy and HttpClient 5.4
Key: HTTPCLIENT-2355
URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2355
Project: HttpComponents HttpClient
Issue Type: Bug
Components: HttpClient (classic)
Affects Versions: 5.4.1
Reporter: V. S.
Exception org.apache.hc.core5.http.ProtocolException: "Chunked transfer
encoding not allowed for HTTP/1.0" is thrown when sending request through
corporate proxy (using Spring's RestClient). That did not occur with HttpClient
5.3.
Wire protocol (see below) shows proxy replies to CONNECT request with
"HTTP/1.{*}0{*} 200 Connection Established". Since 5.4., this protocol version
seems to be interpreted and set on the HTTP connection that is made after
establishing the TLS connection through the TCP tunnel set up by the proxy.
The corporate proxies are very hard to change to e.g. return "HTTP/1.{*}1{*}
200 ..." instead.
*Wire protocol* (target and proxy host names have been replaced) :
{{h.i.i.DefaultHttpClientConnectionOperator http-outgoing-0
http://PROXY_HOST:8080 connected [...]}}
{{h.i.i.PoolingHttpClientConnectionManager ep-0000000001 executing exchange
ex-0000000001 over http-outgoing-0}}
{{[...]}}
{{org.apache.hc.client5.http.wire http-outgoing-0 >> "CONNECT TARGET_HOST:443
HTTP/1.1[\r][\n]"}}
{{org.apache.hc.client5.http.wire http-outgoing-0 >> "Host
TARGET_HOST:443[\r][\n]"}}
{{org.apache.hc.client5.http.wire http-outgoing-0 >> "User-Agent:
ApacheHttpClient/5.4.1 (Java/17.[...])[\r][\n]"}}
{{org.apache.hc.client5.http.wire http-outgoing-0 >> "[\r][\n]"}}
{{org.apache.hc.client5.http.wire http-outgoing-0 << "HTTP/1.0 200 Connection
Established[\r][\n]"}}
{{org.apache.hc.client5.http.wire http-outgoing-0 << "[\r][\n]"}}
{{[...]}}
{{h.i.i.DefaultHttpClientConnectionOperator http-outgoing-0 upgrading to TLS
TARGET_HOST:443}}
{{[...]}}
{{o.a.h.c.ssl.AbstractClientTlsStrategy Secure session established}}
{{o.a.h.c.ssl.AbstractClientTlsStrategy negotiated protocol: TLSv1.3}}
{{[...]}}
{{h.i.i.DefaultHttpClientConnectionOperator http-outgoing-0 upgraded to TLS
TARGET_HOST:443}}
{{o.a.h.c.h.impl.classic.MainClientExec ex-0000000001 executing POST /path
HTTP/1.1}}
{{h.i.i.DefaultManagedHttpClientConnection http-outgoing-0 close connection
IMMEDIATE }}
*Stack trace:*
{{org.apache.hc.core5.http.ProtocolException: Chunked transfer encoding not
allowed for HTTP/1.0}}
{{ at
org.apache.hc.core5.http.protocol.RequestContent.process(RequestContent.java:127)
~[httpcore5-5.3.1.jar:5.3.1]}}
{{ at
org.apache.hc.core5.http.protocol.DefaultHttpProcessor.process(DefaultHttpProcessor.java:107)
~[httpcore5-5.3.1.jar:5.3.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.MainClientExec.execute(MainClientExec.java:119)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:199)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:192)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:150)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:113)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:110)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:174)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:87)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:55)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.apache.hc.client5.http.classic.HttpClient.executeOpen(HttpClient.java:183)
~[httpclient5-5.4.1.jar:5.4.1]}}
{{ at
org.springframework.http.client.HttpComponentsClientHttpRequest.executeInternal(HttpComponentsClientHttpRequest.java:99)
~[spring-web-6.2.1.jar:6.2.1] }}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]