package api import ( "net" "net/http" "net/url" "strings" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, CheckOrigin: func(r *http.Request) bool { origin := r.Header.Get("Origin") if origin == "" { return true } originURL, err := url.Parse(origin) if err != nil { return false } originHost := strings.ToLower(stripPort(originURL.Host)) requestHost := strings.ToLower(stripPort(r.Host)) return originHost != "" && originHost == requestHost }, } func stripPort(host string) string { if parsedHost, _, err := net.SplitHostPort(host); err == nil { return parsedHost } return strings.Trim(host, "[]") }