Tunnel SOCKS iġorr konnessjoni TCP. Go jista' jagħmel TLS mad-destinazzjoni permezz ta' dak it-tunnel u jinnegozja HTTP/2 hemmhekk; is-server SOCKS innifsu m'għandux għalfejn jitkellem HTTP/2.

Fi programm li jżomm it-trasport default standard ta' Go, ikkjona l-konfigurazzjoni tiegħu u agħżel il-proxy:

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,
}

Il-proxy u d-destinazzjoni jibqgħu valuri differenti. Agħżel endpoint SOCKS5 mil-lista tal-proxy SOCKS5 għall-valur tal-proxy; HTTP/2 għadu jiġi nnegozjat mad-destinazzjoni. Uża client biex titlob l-URL reali tas-servizz HTTPS, imbagħad agħlaq il-korp tar-risposta permezz taċ-ċiklu tal-ħajja normali tal-applikazzjoni.

It-trasport default standard jappoġġja HTTP/2. L-ikkjonar tiegħu jżomm dik il-konfigurazzjoni filwaqt li jippermetti li l-għażla tal-proxy tinbidel. L-asserzjoni tat-tip tassumi li l-programm ma ssostitwix http.DefaultTransport b'RoundTripper ieħor.

Għal trasport mibni b'mod separat, ippreżenta l-konfigurazzjoni HTTP/2 tiegħu, speċjalment meta tipprovdi hooks dial jew TLS personalizzati. Go jesponi ForceAttemptHTTP2 u, fil-ħarġiet aktar ġodda, konfigurazzjoni Protocols espliċita għal dawk l-għażliet.

Id-destinazzjoni xorta trid toffri HTTP/2 permezz ta' negozjar TLS. Spezzjona l-valur Proto jew ProtoMajor tar-risposta ta' suċċess biex tara x'ġie użat. Talba HTTPS li tirnexxi permezz ta' SOCKS waħedha ma tippruvax li l-protokoll innegozjat kien HTTP/2.

Artikli relatati