From cef45feaa4bb340e59dadf2bc504e2e39f32baa7 Mon Sep 17 00:00:00 2001 From: Bruce MacDonald Date: Wed, 8 May 2024 13:14:00 -0700 Subject: [PATCH] Add preflight OPTIONS handling and update CORS config (#4086) * Add preflight OPTIONS handling and update CORS config - Implement early return with HTTP 204 (No Content) for OPTIONS requests in allowedHostsMiddleware to optimize preflight handling. - Extend CORS configuration to explicitly allow 'Authorization' headers and 'OPTIONS' method when OLLAMA_ORIGINS environment variable is set. * allow auth, content-type, and user-agent headers * Update routes.go --- server/routes.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/routes.go b/server/routes.go index e0459271..7dfeb513 100644 --- a/server/routes.go +++ b/server/routes.go @@ -935,6 +935,11 @@ func allowedHostsMiddleware(addr net.Addr) gin.HandlerFunc { } if allowedHost(host) { + if c.Request.Method == "OPTIONS" { + c.AbortWithStatus(http.StatusNoContent) + return + } + c.Next() return } @@ -947,6 +952,7 @@ func (s *Server) GenerateRoutes() http.Handler { config := cors.DefaultConfig() config.AllowWildcard = true config.AllowBrowserExtensions = true + config.AllowHeaders = []string{"Authorization", "Content-Type", "User-Agent", "Accept", "X-Requested-With"} config.AllowOrigins = envconfig.AllowOrigins r := gin.Default()