Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b4ec8b9

Browse files
bug #36173 [Http Foundation] Fix clear cookie samesite (guillbdx)
This PR was squashed before being merged into the 3.4 branch. Discussion ---------- [Http Foundation] Fix clear cookie samesite | Q | A | ------------- | --- | Branch? | 3.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | Fix #36107 | License | MIT With Chrome Update 80, Cookies are required to be `secure` and `samesite=none` for cross site requests. However they are defaulted to `samesite=lax` if the samesite attribute is not set. In other words: developer has to explicitely opt-in for `samesite=none` in the case of a cross site request. More details: https://chromestatus.com/feature/5088147346030592 We add the `samesite` argument to `clearCookie` method to allow developer to explicitely set this value. Commits ------- 4bdea1f [Http Foundation] Fix clear cookie samesite
2 parents 881fa02 + 4bdea1f commit b4ec8b9

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,13 @@ public function getCookies($format = self::COOKIES_FLAT)
244244
* @param string $domain
245245
* @param bool $secure
246246
* @param bool $httpOnly
247+
* @param string $sameSite
247248
*/
248-
public function clearCookie($name, $path = '/', $domain = null, $secure = false, $httpOnly = true)
249+
public function clearCookie($name, $path = '/', $domain = null, $secure = false, $httpOnly = true/*, $sameSite = null*/)
249250
{
250-
$this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly));
251+
$sameSite = \func_num_args() > 5 ? func_get_arg(5) : null;
252+
253+
$this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly, false, $sameSite));
251254
}
252255

253256
/**

src/Symfony/Component/HttpFoundation/Tests/ResponseHeaderBagTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,14 @@ public function testClearCookieSecureNotHttpOnly()
128128
$this->assertSetCookieHeader('foo=deleted; expires='.gmdate('D, d-M-Y H:i:s T', time() - 31536001).'; Max-Age=0; path=/; secure', $bag);
129129
}
130130

131+
public function testClearCookieSamesite()
132+
{
133+
$bag = new ResponseHeaderBag([]);
134+
135+
$bag->clearCookie('foo', '/', null, true, false, 'none');
136+
$this->assertSetCookieHeader('foo=deleted; expires='.gmdate('D, d-M-Y H:i:s T', time() - 31536001).'; Max-Age=0; path=/; secure; samesite=none', $bag);
137+
}
138+
131139
public function testReplace()
132140
{
133141
$bag = new ResponseHeaderBag([]);

0 commit comments

Comments
 (0)