You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add option to disable cookie persistence in Client/AsyncClient #2992
I've been using httpx's AsyncClient as a web spider, however I have noticed that cookies are automatically persisted and there's no easy way to disable this. My workaround has been to subclass python's http.cookiejar.CookieJar like so:
fromhttp.cookiejarimportCookieJarclassNullCookieJar(CookieJar):
"""A CookieJar that rejects all cookies."""defextract_cookies(self, *_):
"""For extracting and saving cookies. This implementation does nothing"""passdefset_cookie(self, _):
"""Normally for setting a cookie. This implementation does nothing"""pass
Would it be possible to:
add an option to disable cookie persistence to Client/AsyncClient or
include this implementation of NullCookieJar in httpx as a utility class?
I would love to see something like #3065 merged. I consider merging cookies by default to be a possible attack vector, so I would love to turn this off, when not needed.
For anyone use this, you might also want add a aclose impl that calls await self.transport.aclose() or derive the custom transport from AsyncHTTPTransport which has correct impl of aclose
Otherwise the custom transport won't be closed correctly since it's aclose does nothing.
Perhaps you could remove the Set-Cookie header before it reaches the client instance?
Unfortunately this doesn't seem like a good idea if you want the user code to process the Set-Cookie headers itself (I guess you could reinstate the header somewhere down the line but I'm not sure what would you need to subclass for that).
Activity
karpetrosyan commentedon Dec 18, 2023
Hi!
Perhaps you could remove the Set-Cookie header before it reaches the client instance?
Example:
idrissbellil commentedon May 27, 2024
For
AsyncClientI am guessing the workaround is:lovelydinosaur commentedon Aug 27, 2024
Perhaps this is a common enough use-case that we should add
cookies = httpx.NoCookies(), in line with @fastily's suggestion?sobolevn commentedon Dec 9, 2024
I would love to see something like #3065 merged. I consider merging cookies by default to be a possible attack vector, so I would love to turn this off, when not needed.
jschlyter commentedon Dec 18, 2024
+1 for #3065
BlackCloud37 commentedon Sep 15, 2025
For anyone use this, you might also want add a
acloseimpl that callsawait self.transport.aclose()or derive the custom transport from AsyncHTTPTransport which has correct impl ofacloseOtherwise the custom transport won't be closed correctly since it's aclose does nothing.
scratchmex commentedon Oct 3, 2025
I think the best approach is
NoopCookies(). the #3065 approach pollutes the api too much. see how many new arguments are added to cascade itwRAR commentedon Feb 10, 2026
Unfortunately this doesn't seem like a good idea if you want the user code to process the
Set-Cookieheaders itself (I guess you could reinstate the header somewhere down the line but I'm not sure what would you need to subclass for that).