diff --git a/scrapy/downloadermiddlewares/cookies.py b/scrapy/downloadermiddlewares/cookies.py index 6495157d765..b2227dd8d8b 100644 --- a/scrapy/downloadermiddlewares/cookies.py +++ b/scrapy/downloadermiddlewares/cookies.py @@ -43,10 +43,11 @@ def _process_cookies(self, cookies, *, jar, request): if cookie_domain and _is_public_domain(cookie_domain): if cookie_domain != request_domain: - continue - cookie.domain = request_domain - - jar.set_cookie_if_ok(cookie, request) + cookie.domain = request_domain + jar.set_cookie_if_ok(cookie, request) + else: + print(f'seting cookie {cookie.__dict__}') + jar.set_cookie(cookie) def process_request(self, request, spider): if request.meta.get("dont_merge_cookies", False): diff --git a/tests/test_downloadermiddleware_cookies.py b/tests/test_downloadermiddleware_cookies.py index 4a81a638ee1..af43e4bc3d7 100644 --- a/tests/test_downloadermiddleware_cookies.py +++ b/tests/test_downloadermiddleware_cookies.py @@ -646,7 +646,7 @@ def test_user_set_cookie_domain_suffix_public_period(self): "https://foo.co.uk", "https://bar.co.uk", "co.uk", - cookies1=False, + cookies1=True, cookies2=False, ) @@ -655,7 +655,7 @@ def test_user_set_cookie_domain_suffix_public_private(self): "https://foo.blogspot.com", "https://bar.blogspot.com", "blogspot.com", - cookies1=False, + cookies1=True, cookies2=False, ) @@ -732,3 +732,23 @@ def test_server_set_cookie_domain_public_period(self): "co.uk", cookies=True, ) + + def test_off_domain_jar_storage(self): + request1 = Request( + "https://a.example", + cookies=[ + { + "name": "foo", + "value": "bar", + "domain": "b.example", + }, + ], + ) + print(f'processing request1 {request1}') + assert self.mw.process_request(request1, self.spider) is None + self.assertNotIn(b"Cookie", request1.headers) + + request2 = Request("https://b.example/") + print(f'processing request2 {request2}') + assert self.mw.process_request(request2, self.spider) is None + self.assertEqual(request2.headers.get(b"Cookie"), b"foo=bar")