snapshot of https://github.com/centrifugal/centrifugo.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
test / Lint (push) Failing after 3s
test / Test with Go 1.26.8 (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-16 01:17:21 +05:00
commit b352a9a30d
472 changed files with 108375 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
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)
})
}