Skip to main content

CORS

Cross-Origin Resource Sharing middleware for controlling access from web browsers.

Usage

r.Use(middleware.CORS(middleware.DefaultCORSConfig()))

Configuration

config := middleware.DefaultCORSConfig()
config.AllowedOrigins = []string{"https://app.example.com"}
config.AllowCredentials = true
r.Use(middleware.CORS(config))

Options

OptionDefaultDescription
AllowedOrigins[]Allowed origins (e.g., ["https://app.example.com"])
AllowedMethodsGET, POST, PUT, DELETE, PATCH, OPTIONSAllowed HTTP methods
AllowedHeadersContent-Type, AuthorizationAllowed request headers
AllowCredentialsfalseAllow cookies and auth headers
ExposedHeaders["Content-Length", "Date"]Response headers exposed to JS
MaxAge3600Preflight cache duration (seconds)

How It Works

  • Handles OPTIONS preflight requests automatically
  • Sets Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers, and Access-Control-Max-Age headers
  • When AllowCredentials is true, mirrors the requesting origin (wildcard * is not allowed with credentials per spec)