Skip to content

Commit 1284cb4

Browse files
committed
Refactor CORS headers handling to use precomputed variable for efficiency
1 parent 057d1a3 commit 1284cb4

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

pkg/http/handler.go

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package http
33
import (
44
"context"
55
"errors"
6-
"fmt"
6+
"strings"
77
"log/slog"
88
"net/http"
99

@@ -416,6 +416,22 @@ func PATScopeFilter(b *inventory.Builder, r *http.Request, fetcher scopes.Fetche
416416
return b
417417
}
418418

419+
// corsAllowHeaders is the precomputed Access-Control-Allow-Headers value.
420+
var corsAllowHeaders = strings.Join([]string{
421+
"Content-Type",
422+
"Mcp-Session-Id",
423+
"Mcp-Protocol-Version",
424+
"Last-Event-ID",
425+
headers.AuthorizationHeader,
426+
headers.MCPReadOnlyHeader,
427+
headers.MCPToolsetsHeader,
428+
headers.MCPToolsHeader,
429+
headers.MCPExcludeToolsHeader,
430+
headers.MCPFeaturesHeader,
431+
headers.MCPLockdownHeader,
432+
headers.MCPInsidersHeader,
433+
}, ", ")
434+
419435
// SetCorsHeaders is middleware that sets CORS headers to allow browser-based
420436
// MCP clients to connect from any origin. This is safe because the server
421437
// authenticates via bearer tokens (not cookies), so cross-origin requests
@@ -426,17 +442,7 @@ func SetCorsHeaders(h http.Handler) http.Handler {
426442
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS")
427443
w.Header().Set("Access-Control-Max-Age", "86400")
428444
w.Header().Set("Access-Control-Expose-Headers", "Mcp-Session-Id, WWW-Authenticate")
429-
w.Header().Set("Access-Control-Allow-Headers", fmt.Sprintf(
430-
"Content-Type, Mcp-Session-Id, Mcp-Protocol-Version, Last-Event-ID, %s, %s, %s, %s, %s, %s, %s, %s",
431-
headers.AuthorizationHeader,
432-
headers.MCPReadOnlyHeader,
433-
headers.MCPToolsetsHeader,
434-
headers.MCPToolsHeader,
435-
headers.MCPExcludeToolsHeader,
436-
headers.MCPFeaturesHeader,
437-
headers.MCPLockdownHeader,
438-
headers.MCPInsidersHeader,
439-
))
445+
w.Header().Set("Access-Control-Allow-Headers", corsAllowHeaders)
440446

441447
if r.Method == http.MethodOptions {
442448
w.WriteHeader(http.StatusOK)

0 commit comments

Comments
 (0)