Open fastily opened 11 months ago
Hi! Perhaps you could remove the Set-Cookie header before it reaches the client instance?
Example:
import httpx
class DisableCookieTransport(httpx.BaseTransport):
def __init__(self, transport: httpx.BaseTransport):
self.transport = transport
def handle_request(self, request: httpx.Request) -> httpx.Response:
response = self.transport.handle_request(request)
del response.headers["set-cookie"]
return response
client = httpx.Client(transport=DisableCookieTransport(httpx.HTTPTransport()))
response = client.get("https://httpbin.org/cookies/set?foo=bar")
For AsyncClient
I am guessing the workaround is:
class AsyncDisableCookieTransport(httpx.AsyncBaseTransport):
def __init__(self, transport: httpx.AsyncBaseTransport):
self.transport = transport
async def handle_async_request(self, request: httpx.Request) -> httpx.Response:
response = await self.transport.handle_async_request(request)
response.headers.pop("set-cookie", None)
return response
client = httpx.AsyncClient(transport=AsyncDisableCookieTransport(httpx.AsyncHTTPTransport()))
Perhaps this is a common enough use-case that we should add cookies = httpx.NoCookies()
, in line with @fastily's suggestion?
Initially raised as discussion #1533
I've been using
httpx
'sAsyncClient
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'shttp.cookiejar.CookieJar
like so:Would it be possible to:
Client
/AsyncClient
orNullCookieJar
inhttpx
as a utility class?Thanks!