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

Схожі статті