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