Go CONNECT-Header auf den Transport legen
Senden Sie einen erforderlichen Header während CONNECT an einen HTTP-Proxy, ohne ihn an die Zielanfrage zu hängen.
Ein Header, der http.Request.Header hinzugefügt wird, beschreibt die Zielanfrage. Wenn HTTPS einen HTTP-Proxy verwendet, führt der Transport zuerst CONNECT aus. Die Zielanfrage-Header sind keine allgemeine Konfigurations-API für diesen früheren Austausch.
Für einen statischen Header, den Ihr Proxy verlangt, konfigurieren Sie ProxyConnectHeader des Transports:
transport := &http.Transport{
Proxy: http.ProxyURL(proxyURL),
ProxyConnectHeader: http.Header{
"X-Proxy-Account": []string{"example-account"},
},
}Hier ist proxyURL die geparste Endpunkt-URL. Der Header dient der Veranschaulichung und ist nur nützlich, wenn der Proxybetreiber ein solches Feld definiert.
Für einen Wert, der pro Proxy oder Ziel gewählt wird, verwenden Sie GetProxyConnectHeader. Der dokumentierte Callback erhält die Proxy-URL und das CONNECT-Ziel. Wenn dieser Callback nicht nil ist, wird das statische Feld ProxyConnectHeader ignoriert.
Halten Sie Werte im vorgesehenen Bereich. Eine Kontokennung, die nur für den Proxy gilt, gehört zum Proxy-Austausch; ein Website-Autorisierungswert gehört zur Zielanfrage. Wenn ein Callback den erforderlichen Handshake-Wert nicht liefern kann, geben Sie seinen Fehler zurück, statt stillschweigend eine anders konfigurierte Anfrage zu senden.
Diese Einstellungen passen die CONNECT-Behandlung an. Sie erfinden kein eigenes Authentifizierungsprotokoll und ändern nicht die Zugriffsrichtlinie des Proxy-Dienstes.