Skip to content

Cookies fail #18

@arobertn

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
    

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