Coloque os cabeçalhos CONNECT do Go no Transport
Envie um cabeçalho exigido a um proxy HTTP durante o CONNECT sem colocá-lo na requisição de destino.
Um cabeçalho adicionado a http.Request.Header descreve a requisição de destino. Quando o HTTPS usa um proxy HTTP, o transport realiza primeiro o CONNECT. Os cabeçalhos da requisição de destino não são uma API de configuração geral para essa troca anterior.
Para um cabeçalho estático exigido pelo seu proxy, configure o ProxyConnectHeader do transport:
transport := &http.Transport{
Proxy: http.ProxyURL(proxyURL),
ProxyConnectHeader: http.Header{
"X-Proxy-Account": []string{"example-account"},
},
}Aqui proxyURL é a URL do endpoint já analisada. O cabeçalho é ilustrativo e só é útil quando o operador do proxy define esse campo.
Para um valor escolhido por proxy ou destino, use GetProxyConnectHeader. A função de retorno documentada recebe a URL do proxy e o alvo do CONNECT. Quando essa função não é nil, o campo estático ProxyConnectHeader é ignorado.
Mantenha os valores no escopo pretendido. Uma marca de conta apenas para o proxy pertence à troca com o proxy; um valor de autorização de site pertence à requisição de destino. Se uma função de retorno não conseguir produzir o valor de handshake exigido, retorne o erro dela em vez de enviar silenciosamente uma requisição configurada de outra forma.
Essas configurações personalizam o tratamento do CONNECT. Elas não inventam um protocolo de autenticação próprio nem alteram a política de acesso do serviço de proxy.