Skip to content

Cookies fail #18

Description

@arobertn

I experienced the following issues with cookies:

  1. "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".

  2. 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(...)).

  3. 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
    

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions