Improve check for invalid cookie in CookiesMiddleware (#4772)

This commit is contained in:
Eugenio Lacuesta 2020-09-01 06:04:00 -03:00 committed by GitHub
parent be655b855d
commit 307e35c664
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

View File

@ -74,7 +74,7 @@ class CookiesMiddleware:
"""
decoded = {}
for key in ("name", "value", "path", "domain"):
if not cookie.get(key):
if cookie.get(key) is None:
if key in ("name", "value"):
msg = "Invalid cookie found in request {}: {} ('{}' is missing)"
logger.warning(msg.format(request, cookie, key))

View File

@ -322,6 +322,9 @@ class CookiesMiddlewareTest(TestCase):
cookies2 = [{'name': 'foo'}, {'name': 'key', 'value': 'value2'}]
req2 = Request('http://example.org/2', cookies=cookies2)
assert self.mw.process_request(req2, self.spider) is None
cookies3 = [{'name': 'foo', 'value': None}, {'name': 'key', 'value': ''}]
req3 = Request('http://example.org/3', cookies=cookies3)
assert self.mw.process_request(req3, self.spider) is None
lc.check(
("scrapy.downloadermiddlewares.cookies",
"WARNING",
@ -331,6 +334,11 @@ class CookiesMiddlewareTest(TestCase):
"WARNING",
"Invalid cookie found in request <GET http://example.org/2>:"
" {'name': 'foo'} ('value' is missing)"),
("scrapy.downloadermiddlewares.cookies",
"WARNING",
"Invalid cookie found in request <GET http://example.org/3>:"
" {'name': 'foo', 'value': None} ('value' is missing)"),
)
self.assertCookieValEqual(req1.headers['Cookie'], 'key=value1')
self.assertCookieValEqual(req2.headers['Cookie'], 'key=value2')
self.assertCookieValEqual(req3.headers['Cookie'], 'key=')