package main import ( "net/http" "sour.is/x/toolbox/httpsrv" "sour.is/x/toolbox/ident" ) func init() { httpsrv.NewMiddleware("cors", doCORS). Register(httpsrv.EventPreAuth) } func doCORS(_ string, w httpsrv.ResponseWriter, r *http.Request, _ ident.Ident) bool { origin := r.Header.Get("origin") headers := r.Header.Get("access-control-request-headers") if origin != "" { w.Header().Add("access-control-allow-origin", origin) } w.Header().Add("access-control-allow-methods", "GET, POST, PUT, DELETE, OPTIONS") w.Header().Add("access-control-allow-credentials", "true") w.Header().Add("access-control-max-age", "3600") if headers != "" { w.Header().Add("access-control-allow-headers", headers) } if r.Method == "OPTIONS" { return false } return true }