diff --git a/pkg/apiserver/index.go b/pkg/apiserver/index.go index 0b61665a106..14fab02d071 100644 --- a/pkg/apiserver/index.go +++ b/pkg/apiserver/index.go @@ -27,6 +27,12 @@ import ( func IndexHandler(container *restful.Container, muxHelper *MuxHelper) func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { + status := http.StatusOK + if r.URL.Path != "/" && r.URL.Path != "/index.html" { + // Since "/" matches all paths, handleIndex is called for all paths for which there is no handler registered. + // We want to to return a 404 status with a list of all valid paths, incase of an invalid URL request. + status = http.StatusNotFound + } var handledPaths []string // Extract the paths handled using restful.WebService for _, ws := range container.RegisteredWebServices() { @@ -35,6 +41,6 @@ func IndexHandler(container *restful.Container, muxHelper *MuxHelper) func(http. // Extract the paths handled using mux handler. handledPaths = append(handledPaths, muxHelper.RegisteredPaths...) sort.Strings(handledPaths) - writeRawJSON(http.StatusOK, api.RootPaths{Paths: handledPaths}, w) + writeRawJSON(status, api.RootPaths{Paths: handledPaths}, w) } } diff --git a/test/integration/auth_test.go b/test/integration/auth_test.go index a0323fba043..c0b13a08618 100644 --- a/test/integration/auth_test.go +++ b/test/integration/auth_test.go @@ -363,6 +363,7 @@ func getTestRequests() []struct { {"GET", "/api", "", code200}, {"GET", "/healthz", "", code200}, {"GET", "/version", "", code200}, + {"GET", "/invalidURL", "", code404}, } return requests }