Files
upstream-centrifugo/internal/middleware/cors.go
upstream-mirror b352a9a30d
Some checks failed
test / Lint (push) Failing after 3s
test / Test with Go 1.26.8 (push) Failing after 2s
snapshot of https://github.com/centrifugal/centrifugo.git (master, 2026-09-16; blobs > 131072B omitted)
2026-09-16 01:17:21 +05:00

29 lines
756 B
Go

package middleware
import "net/http"
type OriginCheck func(r *http.Request) bool
// CORS middleware.
type CORS struct {
originCheck OriginCheck
}
func NewCORS(originCheck OriginCheck) *CORS {
return &CORS{originCheck: originCheck}
}
func (c *CORS) Middleware(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
header := w.Header()
if c.originCheck(r) {
header.Set("Access-Control-Allow-Origin", r.Header.Get("origin"))
if allowHeaders := r.Header.Get("Access-Control-Request-Headers"); allowHeaders != "" && allowHeaders != "null" {
header.Add("Access-Control-Allow-Headers", allowHeaders)
}
header.Set("Access-Control-Allow-Credentials", "true")
}
h.ServeHTTP(w, r)
})
}