Skip to content

Commit a635563

Browse files
committed
Merge pull request #261 from KeepSafe/cookies_path
Use path=/ by default for cookies
2 parents a336404 + f7a43d0 commit a635563

File tree

3 files changed

+30
-16
lines changed

3 files changed

+30
-16
lines changed

aiohttp/web.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ def cookies(self):
471471
return self._cookies
472472

473473
def set_cookie(self, name, value, *, expires=None,
474-
domain=None, max_age=None, path=None,
474+
domain=None, max_age=None, path='/',
475475
secure=None, httponly=None, version=None):
476476
"""Set or update response cookie.
477477
@@ -501,7 +501,7 @@ def set_cookie(self, name, value, *, expires=None,
501501
if version is not None:
502502
c['version'] = version
503503

504-
def del_cookie(self, name, *, domain=None, path=None):
504+
def del_cookie(self, name, *, domain=None, path='/'):
505505
"""Delete cookie.
506506
507507
Creates new empty expired cookie.

docs/web_reference.rst

+13-5
Original file line numberDiff line numberDiff line change
@@ -411,8 +411,8 @@ StreamResponse
411411
:meth:`set_cookie`, :meth:`del_cookie` for cookie
412412
manipulations.
413413

414-
.. method:: set_cookie(name, value, *, expires=None, \
415-
domain=None, max_age=None, path=None, \
414+
.. method:: set_cookie(name, value, *, path='/', expires=None, \
415+
domain=None, max_age=None, \
416416
secure=None, httponly=None, version=None)
417417

418418
Convenient way for setting :attr:`cookies`, allows to specify
@@ -436,7 +436,7 @@ StreamResponse
436436
immediately. (optional)
437437

438438
:param str path: specifies the subset of URLs to
439-
which this cookie applies. (optional)
439+
which this cookie applies. (optional, ``'/'`` by default)
440440

441441
:param bool secure: attribute (with no value) directs
442442
the user agent to use only (unspecified)
@@ -458,15 +458,23 @@ StreamResponse
458458
specification the cookie
459459
conforms. (Optional, *version=1* by default)
460460

461-
.. method:: del_cookie(name, *, domain=None, path=None)
461+
.. versionchanged:: 0.14.3
462+
463+
Default value for *path* changed from ``None`` to ``'/'``.
464+
465+
.. method:: del_cookie(name, *, path='/', domain=None)
462466

463467
Deletes cookie.
464468

465469
:param str name: cookie name
466470

467471
:param str domain: optional cookie domain
468472

469-
:param str path: optional cookie path
473+
:param str path: optional cookie path, ``'/'`` by default
474+
475+
.. versionchanged:: 0.14.3
476+
477+
Default value for *path* changed from ``None`` to ``'/'``.
470478

471479
.. attribute:: content_length
472480

tests/test_web_response.py

+15-9
Original file line numberDiff line numberDiff line change
@@ -256,19 +256,23 @@ def test_response_cookies(self):
256256
self.assertEqual(str(resp.cookies), '')
257257

258258
resp.set_cookie('name', 'value')
259-
self.assertEqual(str(resp.cookies), 'Set-Cookie: name=value')
259+
self.assertEqual(str(resp.cookies), 'Set-Cookie: name=value; Path=/')
260260
resp.set_cookie('name', 'other_value')
261-
self.assertEqual(str(resp.cookies), 'Set-Cookie: name=other_value')
261+
self.assertEqual(str(resp.cookies),
262+
'Set-Cookie: name=other_value; Path=/')
262263

263264
resp.cookies['name'] = 'another_other_value'
264265
resp.cookies['name']['max-age'] = 10
265-
self.assertEqual(str(resp.cookies),
266-
'Set-Cookie: name=another_other_value; Max-Age=10')
266+
self.assertEqual(
267+
str(resp.cookies),
268+
'Set-Cookie: name=another_other_value; Max-Age=10; Path=/')
267269

268270
resp.del_cookie('name')
269-
self.assertEqual(str(resp.cookies), 'Set-Cookie: name=; Max-Age=0')
271+
self.assertEqual(
272+
str(resp.cookies),
273+
'Set-Cookie: name=; Max-Age=0; Path=/')
270274

271-
resp.set_cookie('name', 'value', domain='local.host')
275+
resp.set_cookie('name', 'value', domain='local.host', path=None)
272276
self.assertEqual(str(resp.cookies),
273277
'Set-Cookie: name=value; Domain=local.host')
274278

@@ -283,7 +287,7 @@ def test_response_cookie_path(self):
283287
resp.set_cookie('name', 'value', expires='123')
284288
self.assertEqual(str(resp.cookies),
285289
'Set-Cookie: name=value; expires=123;'
286-
' Path=/some/path')
290+
' Path=/')
287291
resp.set_cookie('name', 'value', domain='example.com',
288292
path='/home', expires='123', max_age='10',
289293
secure=True, httponly=True, version='2.0')
@@ -304,15 +308,17 @@ def test_response_cookie__issue_del_cookie(self):
304308
self.assertEqual(str(resp.cookies), '')
305309

306310
resp.del_cookie('name')
307-
self.assertEqual(str(resp.cookies), 'Set-Cookie: name=; Max-Age=0')
311+
self.assertEqual(str(resp.cookies),
312+
'Set-Cookie: name=; Max-Age=0; Path=/')
308313

309314
def test_cookie_set_after_del(self):
310315
resp = StreamResponse()
311316

312317
resp.del_cookie('name')
313318
resp.set_cookie('name', 'val')
314319
# check for Max-Age dropped
315-
self.assertEqual(str(resp.cookies), 'Set-Cookie: name=val')
320+
self.assertEqual(str(resp.cookies),
321+
'Set-Cookie: name=val; Path=/')
316322

317323
def test_set_status_with_reason(self):
318324
resp = StreamResponse()

0 commit comments

Comments
 (0)