@@ -15,11 +15,6 @@ func CorsMiddleware(allowedOrigins []string, next http.Handler) http.Handler {
1515 allowedOrigins = getAllowedOrigins ()
1616 }
1717
18- // Explicitly disable all origins.
19- if allowedOrigins == nil {
20- return next
21- }
22-
2318 allowAll := len (allowedOrigins ) == 1 && allowedOrigins [0 ] == "*"
2419 allowedSet := make (map [string ]struct {}, len (allowedOrigins ))
2520 for _ , o := range allowedOrigins {
@@ -29,16 +24,23 @@ func CorsMiddleware(allowedOrigins []string, next http.Handler) http.Handler {
2924 return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
3025 origin := r .Header .Get ("Origin" )
3126
27+ allowed := allowAll || originAllowed (origin , allowedSet )
28+
29+ if origin != "" && ! allowed {
30+ http .Error (w , "Origin not allowed" , http .StatusForbidden )
31+ return
32+ }
33+
3234 // Set CORS headers if origin is allowed
33- if origin != "" && ( allowAll || originAllowed ( origin , allowedSet )) {
35+ if origin != "" && allowed {
3436 w .Header ().Set ("Access-Control-Allow-Origin" , origin )
3537 }
3638
3739 // Handle OPTIONS requests with origin validation.
3840 // Only intercept OPTIONS if the origin is valid to prevent unauthorized preflight requests.
3941 if r .Method == http .MethodOptions {
4042 // Require valid Origin header for OPTIONS requests
41- if origin == "" || ! ( allowAll || originAllowed ( origin , allowedSet )) {
43+ if origin == "" || ! allowed {
4244 // No origin or invalid origin - pass to router for proper 405/404 response
4345 next .ServeHTTP (w , r )
4446 return
0 commit comments