Pon los encabezados CONNECT de Go en el Transport
Envía un encabezado obligatorio a un proxy HTTP durante CONNECT sin ponerlo en la petición de destino.
Un encabezado añadido a http.Request.Header describe la petición de destino. Cuando HTTPS usa un proxy HTTP, el transport realiza primero CONNECT. Los encabezados de la petición de destino no son una API de configuración general para ese intercambio anterior.
Para un encabezado estático que exija tu proxy, configura el ProxyConnectHeader del transport:
transport := &http.Transport{
Proxy: http.ProxyURL(proxyURL),
ProxyConnectHeader: http.Header{
"X-Proxy-Account": []string{"example-account"},
},
}Aquí proxyURL es la URL del extremo ya analizada. El encabezado es ilustrativo y solo resulta útil cuando el operador del proxy define ese campo.
Para un valor elegido por proxy o destino, usa GetProxyConnectHeader. La función de retorno documentada recibe la URL del proxy y el objetivo CONNECT. Cuando esta función no es nil, se ignora el campo estático ProxyConnectHeader.
Mantén los valores en el ámbito previsto. Una marca de cuenta solo para el proxy pertenece al intercambio con el proxy; un valor de autorización de un sitio web pertenece a la petición de destino. Si una función de retorno no puede producir el valor de handshake requerido, devuelve su error en lugar de enviar en silencio una petición configurada de otra forma.
Estos ajustes personalizan el tratamiento de CONNECT. No inventan un protocolo de autenticación propio ni cambian la política de acceso del servicio de proxy.