human_curl
human_curl copied to clipboard
Cookies fail
I experienced the following issues with cookies:
-
"Set-Cookie" not searched for in headers case-insensitively. Not sure what the RFCs say, but reality is reality and some servers send "set-cookie".
-
Some kind of confusion in the Response object code between 'cookies' and 'cookiesjar' led to cookies not being made available in resp.cookiesjar. (Found with resp = hurl.post(...)).
-
URL-encoding the ('+' and '=' characters in) a cookie value was causing problems with a server that was not expecting the value to be altered.
This patch fixes these, but I am not submitting it formally since I'm not sure how you want to clean up (2), and (3) is not a final solution either.
--- core.py~ 2012-10-09 11:12:41.000000000 -0400 +++ core.py 2012-10-09 12:11:44.373158314 -0400 @@ -519,7 +519,8 @@ ## if isinstance(value, unicode): ## value = value.encode("utf-8") name = urllib.quote_plus(name)
-
value = urllib.quote_plus(value)
-
#value = urllib.quote_plus(value) chunks.append('%s=%s;' % (name, value)) if chunks: opener.setopt(pycurl.COOKIE, ''.join(chunks))
@@ -621,14 +622,16 @@ # Response headers self._headers = None
# Cookies dictionary
-
self._cookies = None
+# self._cookies = None if isinstance(cookies, CookieJar): self._cookies_jar = cookies elif isinstance(cookies, (TupleType, DictType)): self._cookies_jar = to_cookiejar(cookies) else:
-
self._cookies_jar = None
-
self._cookies_jar = CookieJar()
-
self._cookies = self._cookies_jar # Seconds from request start to finish self.request_time = None
Thanks for feedback, I will think over these problems.
Can you creat patch as pull request?