Разместите заголовки CONNECT в Go на Transport
Отправляйте требуемый заголовок HTTP-прокси во время CONNECT, не добавляя его к запросу к месту назначения.
Заголовок, добавленный в http.Request.Header, описывает запрос к месту назначения. Когда HTTPS использует HTTP-прокси, transport сначала выполняет CONNECT. Заголовки запроса к месту назначения не являются общим API настройки для этого более раннего обмена.
Для статического заголовка, требуемого вашим прокси, настройте ProxyConnectHeader транспорта:
transport := &http.Transport{
Proxy: http.ProxyURL(proxyURL),
ProxyConnectHeader: http.Header{
"X-Proxy-Account": []string{"example-account"},
},
}Здесь proxyURL — разобранный URL конечной точки. Заголовок приведён для примера и полезен только тогда, когда оператор прокси определяет такое поле.
Для значения, выбираемого для каждого прокси или места назначения, используйте GetProxyConnectHeader. Документированная функция обратного вызова получает URL прокси и цель CONNECT. Когда эта функция не равна nil, статическое поле ProxyConnectHeader игнорируется.
Держите значения в предполагаемой области. Маркер учётной записи только для прокси относится к обмену с прокси; значение авторизации веб-сайта относится к запросу к месту назначения. Если функция обратного вызова не может выдать требуемое значение рукопожатия, верните её ошибку, а не отправляйте молча запрос с другой конфигурацией.
Эти параметры настраивают обработку CONNECT. Они не изобретают собственный протокол аутентификации и не меняют политику доступа прокси-сервиса.