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: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to