diff options
author | Rem <remi@sirdata.fr> | 2019-06-14 16:07:33 +0200 |
---|---|---|
committer | Erik Dubbelboer <erik@dubbelboer.com> | 2019-06-14 16:07:33 +0200 |
commit | 9ba4cef1bac8ebc8fe71123bd20cfc681fdb78a8 (patch) | |
tree | 07e605ef26a9ed4c1445fdc3bd9537d220b00a91 /cookie.go | |
parent | ADD TimeoutWithCodeHandler support (#589) (diff) | |
download | fasthttp-9ba4cef1bac8ebc8fe71123bd20cfc681fdb78a8.tar.gz fasthttp-9ba4cef1bac8ebc8fe71123bd20cfc681fdb78a8.tar.bz2 fasthttp-9ba4cef1bac8ebc8fe71123bd20cfc681fdb78a8.zip |
Support SameSite value "None" cookie attribute (#581)
* Support SameSite value "None" cookie attribute
* Fix typo in CookieSameSiteNoneMode comment
* fix comment for SameSite None
Diffstat (limited to 'cookie.go')
-rw-r--r-- | cookie.go | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -31,6 +31,9 @@ const ( CookieSameSiteLaxMode // CookieSameSiteStrictMode sets the SameSite flag with the "Strict" parameter CookieSameSiteStrictMode + // CookieSameSiteNoneMode sets the SameSite flag with the "None" parameter + // see https://tools.ietf.org/html/draft-west-cookie-incrementalism-00 + CookieSameSiteNoneMode ) // AcquireCookie returns an empty Cookie object from the pool. @@ -119,8 +122,12 @@ func (c *Cookie) SameSite() CookieSameSite { } // SetSameSite sets the cookie's SameSite flag to the given value. +// set value CookieSameSiteNoneMode will set Secure to true also to avoid browser rejection func (c *Cookie) SetSameSite(mode CookieSameSite) { c.sameSite = mode + if mode == CookieSameSiteNoneMode { + c.SetSecure(true) + } } // Path returns cookie path. @@ -288,6 +295,11 @@ func (c *Cookie) AppendBytes(dst []byte) []byte { dst = append(dst, strCookieSameSite...) dst = append(dst, '=') dst = append(dst, strCookieSameSiteStrict...) + case CookieSameSiteNoneMode: + dst = append(dst, ';', ' ') + dst = append(dst, strCookieSameSite...) + dst = append(dst, '=') + dst = append(dst, strCookieSameSiteNone...) } return dst } @@ -386,6 +398,10 @@ func (c *Cookie) ParseBytes(src []byte) error { if caseInsensitiveCompare(strCookieSameSiteStrict, kv.value) { c.sameSite = CookieSameSiteStrictMode } + case 'n': // "none" + if caseInsensitiveCompare(strCookieSameSiteNone, kv.value) { + c.sameSite = CookieSameSiteNoneMode + } } } } |