# Cross-Origin Resource Sharing (CORS) Middleware CORS middleware for [Fiber](https://github.com/gofiber/fiber) that that can be used to enable [Cross-Origin Resource Sharing](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) with various options. ## Table of Contents - [Cross-Origin Resource Sharing (CORS) Middleware](#cross-origin-resource-sharing-cors-middleware) - [Table of Contents](#table-of-contents) - [Signatures](#signatures) - [Examples](#examples) - [Default Config](#default-config) - [Custom Config](#custom-config) - [Config](#config) - [Default Config](#default-config-1) ## Signatures ```go func New(config ...Config) fiber.Handler ``` ## Examples First import the middleware from Fiber, ```go import ( "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/cors" ) ``` Then create a Fiber app with `app := fiber.New()`. ### Default Config ```go app.Use(cors.New()) ``` ### Custom Config ```go app.Use(cors.New(cors.Config{ AllowOrigins: "https://gofiber.io, https://gofiber.net", AllowHeaders: "Origin, Content-Type, Accept", })) ``` ## Config ```go // Config defines the config for middleware. type Config struct { // Next defines a function to skip this middleware when returned true. // // Optional. Default: nil Next func(c *fiber.Ctx) bool // AllowOrigin defines a list of origins that may access the resource. // // Optional. Default value "*" AllowOrigins string // AllowMethods defines a list methods allowed when accessing the resource. // This is used in response to a preflight request. // // Optional. Default value "GET,POST,HEAD,PUT,DELETE,PATCH" AllowMethods string // AllowHeaders defines a list of request headers that can be used when // making the actual request. This is in response to a preflight request. // // Optional. Default value "". AllowHeaders string // AllowCredentials indicates whether or not the response to the request // can be exposed when the credentials flag is true. When used as part of // a response to a preflight request, this indicates whether or not the // actual request can be made using credentials. // // Optional. Default value false. AllowCredentials bool // ExposeHeaders defines a whitelist headers that clients are allowed to // access. // // Optional. Default value "". ExposeHeaders string // MaxAge indicates how long (in seconds) the results of a preflight request // can be cached. // // Optional. Default value 0. MaxAge int } ``` ## Default Config ```go var ConfigDefault = Config{ Next: nil, AllowOrigins: "*", AllowMethods: "GET,POST,HEAD,PUT,DELETE,PATCH", AllowHeaders: "", AllowCredentials: false, ExposeHeaders: "", MaxAge: 0, } ```