Use urljoin instead of manual concatenation.
authorJérémy Bethmont <jeremy.bethmont@gmail.com>
Tue, 9 Aug 2011 13:41:59 +0000 (15:41 +0200)
committerJérémy Bethmont <jeremy.bethmont@gmail.com>
Tue, 9 Aug 2011 13:41:59 +0000 (15:41 +0200)
requests/models.py

index 511002905370ac3619c32ebb54d00d8429f93278..57ee5dd82a19ab84a4e4a8d5c6707d1eabe20184 100644 (file)
@@ -12,7 +12,7 @@ import socket
 import zlib
 
 from urllib2 import HTTPError
-from urlparse import urlparse, urlunparse
+from urlparse import urlparse, urlunparse, urljoin
 from datetime import datetime
 
 from .config import settings
@@ -198,8 +198,7 @@ class Request(object):
                 # Facilitate non-RFC2616-compliant 'location' headers
                 # (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource')
                 if not urlparse(url).netloc:
-                    parent_url_components = urlparse(self.url)
-                    url = '%s://%s/%s' % (parent_url_components.scheme, parent_url_components.netloc, urllib.quote(urllib.unquote(url)))
+                    url = urljoin(r.url, urllib.quote(urllib.unquote(url)))
 
                 # http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4
                 if r.status_code is 303: