Een header die aan http.Request.Header wordt toegevoegd, beschrijft het verzoek naar de bestemming. Wanneer HTTPS een HTTP-proxy gebruikt, voert de transport eerst CONNECT uit. De headers van het verzoek naar de bestemming zijn geen algemene configuratie-API voor die eerdere uitwisseling.

Voor een statische header die je proxy vereist, configureer je de ProxyConnectHeader van de transport:

transport := &http.Transport{
    Proxy: http.ProxyURL(proxyURL),
    ProxyConnectHeader: http.Header{
        "X-Proxy-Account": []string{"example-account"},
    },
}

Hier is proxyURL de geparseerde endpoint-URL. De header is illustratief en alleen nuttig wanneer de proxybeheerder zo'n veld definieert.

Voor een waarde die per proxy of bestemming wordt gekozen, gebruik je GetProxyConnectHeader. De gedocumenteerde callback ontvangt de proxy-URL en het CONNECT-doel. Wanneer deze callback niet nil is, wordt het statische veld ProxyConnectHeader genegeerd.

Houd waarden binnen het beoogde bereik. Een accountmarkering die alleen voor de proxy is, hoort bij de proxy-uitwisseling; een autorisatiewaarde van een website hoort bij het verzoek naar de bestemming. Als een callback de vereiste handshake-waarde niet kan produceren, retourneer dan de fout in plaats van stil een anders geconfigureerd verzoek te sturen.

Deze instellingen passen de CONNECT-afhandeling aan. Ze verzinnen geen eigen authenticatieprotocol en wijzigen het toegangsbeleid van de proxydienst niet.

Gerelateerde artikelen