// UpgradeRequestRoundTripper provides an additional method to decorate a request
// with any authentication or other protocol level information prior to performing
// an upgrade on the server. Any response will be handled by the intercepting
// proxy.
typeUpgradeRequestRoundTripperinterface{
http.RoundTripper
// WrapRequest takes a valid HTTP request and returns a suitably altered version
// of request with any HTTP level values required to complete the request half of
// an upgrade on the server. It does not get a chance to see the response and
// should bypass any request side logic that expects to see the response.
WrapRequest(*http.Request)(*http.Request,error)
}
// UpgradeAwareHandler is a handler for proxy requests that may require an upgrade
typeUpgradeAwareHandlerstruct{
// UpgradeRequired will reject non-upgrade connections if true.
...
...
@@ -48,7 +63,7 @@ type UpgradeAwareHandler struct {
Transporthttp.RoundTripper
// UpgradeTransport, if specified, will be used as the backend transport when upgrade requests are provided.
// This allows clients to disable HTTP/2.
UpgradeTransporthttp.RoundTripper
UpgradeTransportUpgradeRequestRoundTripper
// WrapTransport indicates whether the provided Transport should be wrapped with default proxy transport behavior (URL rewriting, X-Forwarded-* header setting)
WrapTransportbool
// InterceptRedirects determines whether the proxy should sniff backend responses for redirects,