Support relative redirects. Fixes #36
authorJohannes <jgorset@gmail.com>
Sun, 22 May 2011 09:39:49 +0000 (11:39 +0200)
committerJohannes <jgorset@gmail.com>
Sun, 22 May 2011 09:41:15 +0000 (11:41 +0200)
requests/models.py

index 3a00d8c..2c3241d 100644 (file)
@@ -177,6 +177,12 @@ class Request(object):
 
                 url = r.headers['location']
 
+                # Facilitate for 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, url)
+
                 # http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4
                 if r.status_code is 303:
                     method = 'GET'