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 }}
This repository was archived by the owner on Jan 13, 2021. It is now read-only.
Repository navigation
This repository was archived by the owner on Jan 13, 2021. It is now read-only.
Using hyper.contrib.HTTP20Adapter with requests.session ignores set-cookie header and does not set cookies. #392
I am using hyper.contrib.HTTP20Adapter with requests in python.
When session is started with requests (with HTTP20Adapter) and url is fetched, it does not set cookies as per 'set-cookie' header.
So, session.cookies.get_dict() returns an empty dict {}.
@divinehawk I have applied the #405 fix but still no luck...
Specifically, what I 'm doing is that I mount hyper.contrib.HTTP20Adapter to a requests.Session in python3 and I am trying to get a specific cookie from the RequestsCookieJar of the response.
However, despite the fact that the response headers contain several 'Set-Cookie' headers, the CookieJar remains empty.
I also added debug messages inside the FakeOriginalResponse.get_all() method in order to see the contents of the "values" variable that this method returns. I see that "values" contains all of the "Set-Cookie" cookies' values.
In the #405 fix I simply replaced the line if n.decode('utf-8') == name.lower():
with: if n.decode('utf-8').lower() == name.lower():
because I noticed that wihout it, the if was never true.
And finally I placed the call to extract_cookies_to_jar() right before the return statement because its final argument needs the information we fake. So instead of calling it like extract_cookies_to_jar(response.cookies, request, response)
I called it like: extract_cookies_to_jar(response.cookies, request, response.raw)
Hope this saves someone the 4 weeks I lost over this...
If I get it right, the HTTP/2 specification (RFC7540 8.1.2 HTTP Header Fields) requires all field names to be in lowercase, so n.decode('utf-8').lower() is not necessary here.
@xingzhisg that's what I thought as well and actually this is why it took me 4 weeks to solve this. I just happened to check this out of dispair, in order to be sure that it wasn't creating any problems. And after I checked that it works with it, I then reverted back and cross-checked that it failed without lower() in order to be 100% sure.
I may have been missing something all along and I 'd appreciate any thoughts on it
I am using hyper.contrib.HTTP20Adapter with requests in python.
When session is started with requests (with HTTP20Adapter) and url is fetched, it does not set cookies as per 'set-cookie' header.
So, session.cookies.get_dict() returns an empty dict {}.