X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d9fdb9630e56f3ccdaee6acd8b1ca4cdbdf11b0a..f4fdee016f05ca986c55c7d769ce2f1a6bec5541:/lib/controller/handler.go diff --git a/lib/controller/handler.go b/lib/controller/handler.go index 7b7378ac55..7c4bb0912f 100644 --- a/lib/controller/handler.go +++ b/lib/controller/handler.go @@ -140,6 +140,8 @@ func (h *Handler) setup() { mux.Handle("/arvados/v1/groups/", rtr) mux.Handle("/arvados/v1/links", rtr) mux.Handle("/arvados/v1/links/", rtr) + mux.Handle("/arvados/v1/authorized_keys", rtr) + mux.Handle("/arvados/v1/authorized_keys/", rtr) mux.Handle("/login", rtr) mux.Handle("/logout", rtr) mux.Handle("/arvados/v1/api_client_authorizations", rtr) @@ -203,6 +205,11 @@ func (h *Handler) localClusterRequest(req *http.Request) (*http.Response, error) if insecure { client = h.insecureClient } + // Clearing the Host field here causes the Go http client to + // use the host part of urlOut as the Host header in the + // outgoing request, instead of the Host value from the + // original request we received. + req.Host = "" return h.proxy.Do(req, urlOut, client) } @@ -277,13 +284,15 @@ func (ent *cacheEnt) refresh(path string, do func(*http.Request) (*http.Response ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(time.Minute)) defer cancel() - // 0.0.0.0:0 is just a placeholder here -- do(), which is + // "http://localhost" is just a placeholder here -- we'll fill + // in req.URL.Path below, and then do(), which is // localClusterRequest(), will replace the scheme and host // parts with the real proxy destination. - req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://0.0.0.0:0/"+path, nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://localhost", nil) if err != nil { return nil, nil, err } + req.URL.Path = path resp, err := do(req) if err != nil { return nil, nil, err