type Cookie … type SameSite … const SameSiteDefaultMode … const SameSiteLaxMode … const SameSiteStrictMode … const SameSiteNoneMode … var errBlankCookie … var errEqualNotFoundInCookie … var errInvalidCookieName … var errInvalidCookieValue … // ParseCookie parses a Cookie header value and returns all the cookies // which were set in it. Since the same cookie name can appear multiple times // the returned Values can contain more than one value for a given key. func ParseCookie(line string) ([]*Cookie, error) { … } // ParseSetCookie parses a Set-Cookie header value and returns a cookie. // It returns an error on syntax error. func ParseSetCookie(line string) (*Cookie, error) { … } // readSetCookies parses all "Set-Cookie" values from // the header h and returns the successfully parsed Cookies. func readSetCookies(h Header) []*Cookie { … } // SetCookie adds a Set-Cookie header to the provided [ResponseWriter]'s headers. // The provided cookie must have a valid Name. Invalid cookies may be // silently dropped. func SetCookie(w ResponseWriter, cookie *Cookie) { … } // String returns the serialization of the cookie for use in a [Cookie] // header (if only Name and Value are set) or a Set-Cookie response // header (if other fields are set). // If c is nil or c.Name is invalid, the empty string is returned. func (c *Cookie) String() string { … } // Valid reports whether the cookie is valid. func (c *Cookie) Valid() error { … } // readCookies parses all "Cookie" values from the header h and // returns the successfully parsed Cookies. // // if filter isn't empty, only cookies of that name are returned. func readCookies(h Header, filter string) []*Cookie { … } // validCookieDomain reports whether v is a valid cookie domain-value. func validCookieDomain(v string) bool { … } // validCookieExpires reports whether v is a valid cookie expires-value. func validCookieExpires(t time.Time) bool { … } // isCookieDomainName reports whether s is a valid domain name or a valid // domain name with a leading dot '.'. It is almost a direct copy of // package net's isDomainName. func isCookieDomainName(s string) bool { … } var cookieNameSanitizer … func sanitizeCookieName(n string) string { … } // sanitizeCookieValue produces a suitable cookie-value from v. // It receives a quoted bool indicating whether the value was originally // quoted. // https://tools.ietf.org/html/rfc6265#section-4.1.1 // // cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) // cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E // ; US-ASCII characters excluding CTLs, // ; whitespace DQUOTE, comma, semicolon, // ; and backslash // // We loosen this as spaces and commas are common in cookie values // thus we produce a quoted cookie-value if v contains commas or spaces. // See https://golang.org/issue/7243 for the discussion. func sanitizeCookieValue(v string, quoted bool) string { … } func validCookieValueByte(b byte) bool { … } // path-av = "Path=" path-value // path-value = <any CHAR except CTLs or ";"> func sanitizeCookiePath(v string) string { … } func validCookiePathByte(b byte) bool { … } func sanitizeOrWarn(fieldName string, valid func(byte) bool, v string) string { … } // parseCookieValue parses a cookie value according to RFC 6265. // If allowDoubleQuote is true, parseCookieValue will consider that it // is parsing the cookie-value; // otherwise, it will consider that it is parsing a cookie-av value // (cookie attribute-value). // // It returns the parsed cookie value, a boolean indicating whether the // parsing was successful, and a boolean indicating whether the parsed // value was enclosed in double quotes. func parseCookieValue(raw string, allowDoubleQuote bool) (value string, quoted, ok bool) { … } func isCookieNameValid(raw string) bool { … }