snapshot of https://github.com/centrifugal/centrifugo.git (master, 2026-09-16; blobs > 131072B omitted)
This commit is contained in:
28
internal/middleware/cors.go
Normal file
28
internal/middleware/cors.go
Normal 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)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user