diff options
author | Senthil Kumaran <orsenthil@gmail.com> | 2010-09-27 01:28:10 (GMT) |
---|---|---|
committer | Senthil Kumaran <orsenthil@gmail.com> | 2010-09-27 01:28:10 (GMT) |
commit | 603ca41e27ed67716dd31e6f7e286a137936cc4b (patch) | |
tree | 1ae8a4d39af2f432913fa0f9c0c347a2a8d02739 | |
parent | 1a0eb98b9c41224f6ea8fd8f87687f79f723ba8c (diff) | |
download | cpython-603ca41e27ed67716dd31e6f7e286a137936cc4b.zip cpython-603ca41e27ed67716dd31e6f7e286a137936cc4b.tar.gz cpython-603ca41e27ed67716dd31e6f7e286a137936cc4b.tar.bz2 |
Merged revisions 85025 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r85025 | senthil.kumaran | 2010-09-27 06:56:03 +0530 (Mon, 27 Sep 2010) | 6 lines
Fix Issue1595365 - Adding the req.headers after the un-redirect headers have
been added. This helps in accidental overwritting of User-Agent header to
default value. To preserve the old behavior, only headers not in unredirected
headers will be updated.
........
-rw-r--r-- | Lib/test/test_urllib2net.py | 12 | ||||
-rw-r--r-- | Lib/urllib/request.py | 6 |
2 files changed, 16 insertions, 2 deletions
diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py index eab9306..ccfbdb2 100644 --- a/Lib/test/test_urllib2net.py +++ b/Lib/test/test_urllib2net.py @@ -159,6 +159,18 @@ class OtherNetworkTests(unittest.TestCase): self.assertEqual(res.geturl(), "http://docs.python.org/glossary.html") + def test_custom_headers(self): + url = "http://www.example.com" + opener = urllib.request.build_opener() + request = urllib.request.Request(url) + self.assertFalse(request.header_items()) + opener.open(request) + self.assertTrue(request.header_items()) + self.assertTrue(request.has_header('User-agent')) + request.add_header('User-Agent','Test-Agent') + opener.open(request) + self.assertEqual(request.get_header('User-agent'),'Test-Agent') + def _test_urls(self, urls, handlers, retry=True): import socket import time diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index c638cfa5..464f847 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -1063,8 +1063,10 @@ class AbstractHTTPHandler(BaseHandler): raise URLError('no host given') h = http_class(host, timeout=req.timeout) # will parse host:port - headers = dict(req.headers) - headers.update(req.unredirected_hdrs) + + headers = dict(req.unredirected_hdrs) + headers.update(dict((k, v) for k, v in req.headers.items() + if k not in headers)) # TODO(jhylton): Should this be redesigned to handle # persistent connections? |