MCPcopy
hub / github.com/gofiber/fiber / Cookie

Method Cookie

res.go:253–335  ·  view source on GitHub ↗

Cookie sets a cookie by passing a cookie struct.

(cookie *Cookie)

Source from the content-addressed store, hash-verified

251
252// Cookie sets a cookie by passing a cookie struct.
253func (r *DefaultRes) Cookie(cookie *Cookie) {
254 if cookie.Path == "" {
255 cookie.Path = "/"
256 }
257
258 if cookie.SessionOnly {
259 cookie.MaxAge = 0
260 cookie.Expires = time.Time{}
261 }
262
263 var sameSite http.SameSite
264
265 switch {
266 case utils.EqualFold(cookie.SameSite, CookieSameSiteStrictMode):
267 sameSite = http.SameSiteStrictMode
268 case utils.EqualFold(cookie.SameSite, CookieSameSiteNoneMode):
269 sameSite = http.SameSiteNoneMode
270 // SameSite=None requires Secure=true per RFC and browser requirements
271 cookie.Secure = true
272 case utils.EqualFold(cookie.SameSite, CookieSameSiteDisabled):
273 sameSite = 0
274 case utils.EqualFold(cookie.SameSite, CookieSameSiteLaxMode):
275 sameSite = http.SameSiteLaxMode
276 default:
277 sameSite = http.SameSiteLaxMode
278 }
279
280 // Partitioned requires Secure=true per CHIPS spec
281 if cookie.Partitioned {
282 cookie.Secure = true
283 }
284
285 // create/validate cookie using net/http
286 hc := &http.Cookie{ //nolint:gosec // G124: http.Cookie missing or has insecure Secure, HttpOnly, or SameSite attribute
287 Name: cookie.Name,
288 Value: cookie.Value,
289 Path: cookie.Path,
290 Domain: cookie.Domain,
291 Expires: cookie.Expires,
292 MaxAge: cookie.MaxAge,
293 Secure: cookie.Secure,
294 HttpOnly: cookie.HTTPOnly,
295 SameSite: sameSite,
296 Partitioned: cookie.Partitioned,
297 }
298
299 if err := hc.Valid(); err != nil {
300 // invalid cookies are ignored, same approach as net/http
301 return
302 }
303
304 // create fasthttp cookie
305 fcookie := fasthttp.AcquireCookie()
306 fcookie.SetKey(hc.Name)
307 fcookie.SetValue(hc.Value)
308 fcookie.SetPath(hc.Path)
309 fcookie.SetDomain(hc.Domain)
310

Callers

nothing calls this directly

Calls 2

SetPathMethod · 0.80
SetCookieMethod · 0.45

Tested by

no test coverage detected