package httpx import ( "net/http" "strings" "time" "github.com/gin-gonic/gin" ) func requestUsesHTTPS(request *http.Request) bool { if request.TLS != nil { return true } forwarded := strings.SplitN(request.Header.Get("X-Forwarded-Proto"), ",", 2)[0] return strings.EqualFold(strings.TrimSpace(forwarded), "https") } // SetTokenCookie also marks cookies Secure behind TLS or a TLS-terminating // reverse proxy. func SetTokenCookie(c *gin.Context, value string, maxAge int) { cookie := &http.Cookie{Name: "x-token", Value: value, Path: "/", MaxAge: maxAge, Secure: requestUsesHTTPS(c.Request), HttpOnly: true, SameSite: http.SameSiteStrictMode} if maxAge < 0 { cookie.Expires = time.Unix(1, 0) } http.SetCookie(c.Writer, cookie) }