diff --git a/rest/internal/cors/handlers.go b/rest/internal/cors/handlers.go index e2a64b74..58187bcb 100644 --- a/rest/internal/cors/handlers.go +++ b/rest/internal/cors/handlers.go @@ -77,12 +77,18 @@ func checkAndSetHeaders(w http.ResponseWriter, r *http.Request, origins []string } func isOriginAllowed(allows []string, origin string) bool { - for _, o := range allows { - if o == allOrigins { + origin = strings.ToLower(origin) + for _, allow := range allows { + if allow == allOrigins { return true } - if strings.HasSuffix(origin, o) { + allow = strings.ToLower(allow) + if origin == allow { + return true + } + + if strings.HasSuffix(origin, "."+allow) { return true } } diff --git a/rest/internal/cors/handlers_test.go b/rest/internal/cors/handlers_test.go index 2082228a..c9de97a3 100644 --- a/rest/internal/cors/handlers_test.go +++ b/rest/internal/cors/handlers_test.go @@ -53,6 +53,11 @@ func TestCorsHandlerWithOrigins(t *testing.T) { origins: []string{"http://local", "http://remote"}, reqOrigin: "http://another", }, + { + name: "not safe origin", + origins: []string{"safe.com"}, + reqOrigin: "not-safe.com", + }, } methods := []string{