Розмістіть заголовки 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. Вони не вигадують власний протокол автентифікації й не змінюють політику доступу проксі-сервісу.