Go CORS: Cross-Origin Resource Sharing

The following CORS middleware should handle most use cases:

type CORSHandler struct {	Next http.Handler } func (h CORSHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {	origin := req.Header.Get("Origin") if origin == "" {	h.Next.ServeHTTP(w, req) return }	header := w.Header()	header.Set("Access-Control-Allow-Origin", origin)	header.Set("Access-Control-Allow-Credentials", "true") if req.Method == http.MethodOptions {	header.Set("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,HEAD")	header.Set("Access-Control-Allow-Headers", "authorization,content-type,content-length")	header.Set("Access-Control-Max-Age", "86400") return }	h.Next.ServeHTTP(w, req) } router := bunrouter.New() handler := http.Handler(router) handler = CORSHandler{Next: handler} 

Alternatively, you can use corsopen in new window module:

import "github.com/rs/cors" router := bunrouter.New() handler := http.Handler(router) handler = cors.Default().Handler(handler) 

See exampleopen in new window for details.