Hello all,

I have been facing an issue when I try to create a HTTP client which needs 
to connect through a HTTPS proxy using the HTTP CONNEC method. I know that 
it can be achieved setting my own http.Transport object. However the issue 
seems to be in the current implementation of /net/http/transport.go code.

In my environment, I am developing a HTTP client which ALWAYS use a HTTPS 
proxy using HTTP CONNECT method. This client is allowed to reach HTTP or 
HTTPS targets. Therefore, I noticed that when I try to reach a HTTPS 
target, the the transport layer works as expected and it uses the HTTP 
CONNECT method. However, when I try to reach a HTTP target, the transport 
does not use the CONNECT  method.

Looking at the transport.go code, I realized that the check to use the 
CONNECT method is based on the protocol of the target instead of being on 
the protocol of the proxy URL. Below is a link showing that:

1. HTTP check

https://cs.opensource.google/go/go/+/refs/tags/go1.9.5:src/net/http/transport.go;l=1092

2. HTTPS check

https://cs.opensource.google/go/go/+/refs/tags/go1.9.5:src/net/http/transport.go;l=1099

As can be seen on the links above, the condition is based on cm 
<https://cs.opensource.google/go/go/+/refs/tags/go1.9.5:src/net/http/transport.go;drc=7ab361531514764fdccb23283a2e7f1916b74b87;l=1570>
.targetScheme 
<https://cs.opensource.google/go/go/+/refs/tags/go1.9.5:src/net/http/transport.go;drc=7ab361531514764fdccb23283a2e7f1916b74b87;l=1816>
 instead 
of cm 
<https://cs.opensource.google/go/go/+/refs/tags/go1.9.5:src/net/http/transport.go;drc=7ab361531514764fdccb23283a2e7f1916b74b87;l=1570>
.proxyURL 
<https://cs.opensource.google/go/go/+/refs/tags/go1.9.5:src/net/http/transport.go;drc=7ab361531514764fdccb23283a2e7f1916b74b87;l=1815>
.Scheme 
<https://cs.opensource.google/go/go/+/refs/tags/go1.9.5:src/net/url/url.go;drc=7ab361531514764fdccb23283a2e7f1916b74b87;l=363>.
 
Is it a bug?

*Go version: go version go1.19.3 linux/amd64*

Mauro

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/d06cd78b-c012-425f-8b5e-52d4bd7a3cbcn%40googlegroups.com.

Reply via email to