HTTP/2 Go-ren SOCKS tunelaren barruan sartzen da
Klonatu HTTP garraio estandarra, hautatu SOCKS proxy-a eta aztertu benetan negoziatu zen helmuga protokoloa.
SOCKS tunel batek TCP konexio bat garraiatzen du. Go-k TLS egin dezake helmugarekin tunel horren bidez eta HTTP/2 negozia dezake han; SOCKS zerbitzariak ez du berak HTTP/2 hitz egin behar.
Go-ren garraio lehenetsi estandarra mantentzen duen programan, klonatu haren konfigurazioa eta hautatu proxy-a:
import (
"net/http"
"net/url"
"time"
)
proxyURL := &url.URL{
Scheme: "socks5",
Host: "proxy.example:1080",
}
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}
Proxy-a eta helmuga balio desberdinak izaten jarraitzen dute. Hautatu SOCKS5 mutur bat SOCKS5 proxy zerrendatik proxy-baliorako; HTTP/2 oraindik helmugarekin negoziatzen da. Erabili client HTTPS zerbitzuaren benetako URLa eskatzeko, eta gero itxi erantzunaren gorputza aplikazioaren bizi-ziklo arruntaren bidez.
Garraio lehenetsi estandarrak HTTP/2 onartzen du. Klonatzeak konfigurazio hori mantentzen du proxy-hautaketa aldatzea ahalbidetuz. Mota-afirmazioak suposatzen du programak ez duela http.DefaultTransport beste RoundTripper batekin ordezkatu.
Bereziki eraikitako garraio baterako, berrikusi haren HTTP/2 konfigurazioa, batez ere dial edo TLS kako pertsonalizatuak ematen direnean. Go-k ForceAttemptHTTP2 agerian uzten du eta, bertsio berriagoetan, Protocols konfigurazio esplizitua hautaketa horietarako.
Helmugak HTTP/2 eskaini behar du oraindik TLS negoziazioaren bidez. Aztertu erantzun arrakastatsuaren Proto edo ProtoMajor balioa zer erabili zen ikusteko. SOCKS bidez arrakasta duen HTTPS eskaera batek ez du berez frogatzen negoziatu zen protokoloa HTTP/2 zela.