diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2003-05-05 04:09:13 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2003-05-05 04:09:13 (GMT) |
commit | 0389295dcdc72df81a037d2712afea600aad9445 (patch) | |
tree | c0e4be3c311f9acf0c543e5ffbdbe61b1bf7d229 /Lib/urllib2.py | |
parent | f6b444ede46fe737fe02799b1b788dc5a3bdc5b4 (diff) | |
download | cpython-0389295dcdc72df81a037d2712afea600aad9445.zip cpython-0389295dcdc72df81a037d2712afea600aad9445.tar.gz cpython-0389295dcdc72df81a037d2712afea600aad9445.tar.bz2 |
Better fix for newurl as suggested by Jim Jewett in SF bug #730963.
Diffstat (limited to 'Lib/urllib2.py')
-rw-r--r-- | Lib/urllib2.py | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/Lib/urllib2.py b/Lib/urllib2.py index 3e700a9..47eed2b 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -408,7 +408,7 @@ class HTTPDefaultErrorHandler(BaseHandler): raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) class HTTPRedirectHandler(BaseHandler): - def redirect_request(self, req, fp, code, msg, headers): + def redirect_request(self, req, fp, code, msg, headers, newurl): """Return a Request or None in response to a redirect. This is called by the http_error_30x methods when a redirection @@ -417,16 +417,6 @@ class HTTPRedirectHandler(BaseHandler): raise HTTPError if no-one else should try to handle this url. Return None if you can't but another Handler might. """ - # XXX 301 and 302 errors must have a location or uri header. - # Not sure about the other error codes. - if "location" in headers: - newurl = headers["location"] - elif "uri" in headers: - newurl = headers["uri"] - else: - return - newurl = urlparse.urljoin(req.get_full_url(), newurl) - m = req.get_method() if (code in (301, 302, 303, 307) and m in ("GET", "HEAD") or code in (302, 303) and m == "POST"): @@ -455,7 +445,7 @@ class HTTPRedirectHandler(BaseHandler): # XXX Probably want to forget about the state of the current # request, although that might interact poorly with other # handlers that also use handler-specific request attributes - new = self.redirect_request(req, fp, code, msg, headers) + new = self.redirect_request(req, fp, code, msg, headers, newurl) if new is None: return |