summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cherrypy/lib/httputil.py2
-rw-r--r--cherrypy/test/test_encoding.py7
2 files changed, 8 insertions, 1 deletions
diff --git a/cherrypy/lib/httputil.py b/cherrypy/lib/httputil.py
index b68d8dd5..61ac362a 100644
--- a/cherrypy/lib/httputil.py
+++ b/cherrypy/lib/httputil.py
@@ -518,7 +518,7 @@ class HeaderMap(CaseInsensitiveDict):
transmitting on the wire for HTTP.
"""
for k, v in header_items:
- if not isinstance(v, six.string_types):
+ if not isinstance(v, six.string_types) and not isinstance(v, six.binary_type):
v = six.text_type(v)
yield tuple(map(cls.encode_header_item, (k, v)))
diff --git a/cherrypy/test/test_encoding.py b/cherrypy/test/test_encoding.py
index ab24ab93..26b0aa18 100644
--- a/cherrypy/test/test_encoding.py
+++ b/cherrypy/test/test_encoding.py
@@ -50,6 +50,8 @@ class EncodingTests(helper.CPWebCase):
cherrypy.response.cookie['candy']['domain'] = 'cherrypy.org'
cherrypy.response.headers[
'Some-Header'] = 'My d\xc3\xb6g has fleas'
+ cherrypy.response.headers[
+ 'Bytes-Header'] = b'Bytes given header'
return 'Any content'
@cherrypy.expose
@@ -424,3 +426,8 @@ class EncodingTests(helper.CPWebCase):
def test_UnicodeHeaders(self):
self.getPage('/cookies_and_headers')
self.assertBody('Any content')
+
+ def test_BytesHeaders(self):
+ self.getPage('/cookies_and_headers')
+ self.assertBody('Any content')
+ self.assertHeader('Bytes-Header', 'Bytes given header')