diff options
author | Armin Ronacher <armin.ronacher@active-4.com> | 2011-01-22 13:13:05 (GMT) |
---|---|---|
committer | Armin Ronacher <armin.ronacher@active-4.com> | 2011-01-22 13:13:05 (GMT) |
commit | 8d96d77f9a386c3cadfd9c9f128b99a94aaddfb4 (patch) | |
tree | 85053ad58fdc9fd916611a6d3b9cc4942feeeb23 /Lib | |
parent | 137e0f0a2218479232405a4e826074148f735666 (diff) | |
download | cpython-8d96d77f9a386c3cadfd9c9f128b99a94aaddfb4.zip cpython-8d96d77f9a386c3cadfd9c9f128b99a94aaddfb4.tar.gz cpython-8d96d77f9a386c3cadfd9c9f128b99a94aaddfb4.tar.bz2 |
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
This makes the implementation of PEP 3333 compliant servers on top of
BaseHTTPServer possible.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/http/server.py | 4 | ||||
-rw-r--r-- | Lib/test/test_httpservers.py | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/Lib/http/server.py b/Lib/http/server.py index 515572f..543abe0 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -448,7 +448,7 @@ class BaseHTTPRequestHandler(socketserver.StreamRequestHandler): message = '' if self.request_version != 'HTTP/0.9': self.wfile.write(("%s %d %s\r\n" % - (self.protocol_version, code, message)).encode('ASCII', 'strict')) + (self.protocol_version, code, message)).encode('latin1', 'strict')) def send_header(self, keyword, value): """Send a MIME header.""" @@ -456,7 +456,7 @@ class BaseHTTPRequestHandler(socketserver.StreamRequestHandler): if not hasattr(self, '_headers_buffer'): self._headers_buffer = [] self._headers_buffer.append( - ("%s: %s\r\n" % (keyword, value)).encode('ASCII', 'strict')) + ("%s: %s\r\n" % (keyword, value)).encode('latin1', 'strict')) if keyword.lower() == 'connection': if value.lower() == 'close': diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index e42038a..2cc94a9 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -97,6 +97,11 @@ class BaseHTTPServerTestCase(BaseTestCase): self.send_header('Connection', 'close') self.end_headers() + def do_LATINONEHEADER(self): + self.send_response(999) + self.send_header('X-Special', 'Dängerous Mind') + self.end_headers() + def setUp(self): BaseTestCase.setUp(self) self.con = http.client.HTTPConnection('localhost', self.PORT) @@ -194,6 +199,11 @@ class BaseHTTPServerTestCase(BaseTestCase): res = self.con.getresponse() self.assertEqual(res.status, 999) + def test_latin1_header(self): + self.con.request('LATINONEHEADER', '/') + res = self.con.getresponse() + self.assertEqual(res.getheader('X-Special'), 'Dängerous Mind') + class SimpleHTTPServerTestCase(BaseTestCase): class request_handler(NoLogRequestHandler, SimpleHTTPRequestHandler): |