diff --git a/frontend/packages/console-telemetry-plugin/src/listeners/usage.ts b/frontend/packages/console-telemetry-plugin/src/listeners/usage.ts index ef9fddf83348..81f243f7f308 100644 --- a/frontend/packages/console-telemetry-plugin/src/listeners/usage.ts +++ b/frontend/packages/console-telemetry-plugin/src/listeners/usage.ts @@ -1,11 +1,12 @@ import { TelemetryEventListener } from '@console/dynamic-plugin-sdk/src'; +import { coFetch } from '@console/internal/co-fetch'; /** * Fire and forget implementation to send usage data to the backend. * See pkg/usage/ for more information. */ const trackUsage = (data: { event: string; perspective: string }) => { - return fetch('/metrics/usage', { + return coFetch('/metrics/usage', { method: 'POST', body: JSON.stringify(data), }) diff --git a/pkg/metrics/handler.go b/pkg/metrics/handler.go index d274ac5886ba..0c43d3814816 100644 --- a/pkg/metrics/handler.go +++ b/pkg/metrics/handler.go @@ -1,6 +1,9 @@ package metrics -import "net/http" +import ( + "net/http" + "strings" +) func AddHeaderAsCookieMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -8,7 +11,8 @@ func AddHeaderAsCookieMiddleware(next http.Handler) http.Handler { // This allows metric requests with proper tokens in either headers or cookies. if r.URL.Path == "/metrics" { openshiftSessionCookieName := "openshift-session-token" - openshiftSessionCookieValue := r.Header.Get("Authorization") // FIXME: in OIDC setup, this actually ends up checking the token "Bearer " to the underlying auth layer - instead of ``. + openshiftSessionCookieValue := r.Header.Get("Authorization") + openshiftSessionCookieValue = strings.TrimPrefix(openshiftSessionCookieValue, "Bearer ") r.AddCookie(&http.Cookie{Name: openshiftSessionCookieName, Value: openshiftSessionCookieValue}) } next.ServeHTTP(w, r) diff --git a/pkg/server/server.go b/pkg/server/server.go index c9ff7b1be37f..23737dcd545e 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -609,11 +609,9 @@ func (s *Server) HTTPHandler() (http.Handler, error) { prometheus.MustRegister(usageMetrics.GetCollectors()...) prometheus.MustRegister(s.AuthMetrics.GetCollectors()...) - handle("/metrics", metrics.AddHeaderAsCookieMiddleware( - tokenReviewHandler(func(w http.ResponseWriter, r *http.Request) { - promhttp.Handler().ServeHTTP(w, r) - }), - )) + handle("/metrics", tokenReviewHandler(func(w http.ResponseWriter, r *http.Request) { + metrics.AddHeaderAsCookieMiddleware(promhttp.Handler()).ServeHTTP(w, r) + })) handleFunc("/metrics/usage", tokenReviewHandler(func(w http.ResponseWriter, r *http.Request) { usage.Handle(usageMetrics, w, r) }))