summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_urllib2.py9
-rw-r--r--Lib/urllib2.py5
2 files changed, 13 insertions, 1 deletions
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index 90e1771..a35cbfa 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -822,6 +822,8 @@ class HandlerTests(unittest.TestCase):
method = getattr(h, "http_error_%s" % code)
req = Request(from_url, data)
req.add_header("Nonsense", "viking=withhold")
+ if data is not None:
+ req.add_header("Content-Length", str(len(data)))
req.add_unredirected_header("Spam", "spam")
try:
method(req, MockFile(), code, "Blah",
@@ -834,6 +836,13 @@ class HandlerTests(unittest.TestCase):
self.assertEqual(o.req.get_method(), "GET")
except AttributeError:
self.assert_(not o.req.has_data())
+
+ # now it's a GET, there should not be headers regarding content
+ # (possibly dragged from before being a POST)
+ headers = [x.lower() for x in o.req.headers]
+ self.assertTrue("content-length" not in headers)
+ self.assertTrue("content-type" not in headers)
+
self.assertEqual(o.req.headers["Nonsense"],
"viking=withhold")
self.assert_("Spam" not in o.req.headers)
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 8bf0884..d5a539d 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -534,8 +534,11 @@ class HTTPRedirectHandler(BaseHandler):
# do the same.
# be conciliant with URIs containing a space
newurl = newurl.replace(' ', '%20')
+ newheaders = dict((k,v) for k,v in req.headers.items()
+ if k.lower() not in ("content-length", "content-type")
+ )
return Request(newurl,
- headers=req.headers,
+ headers=newheaders,
origin_req_host=req.get_origin_req_host(),
unverifiable=True)
else: