Martin Panter added the comment: If you enable BytesWarning (python -b) you do get an error:
>>> urlopen(req, data) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3.5/urllib/request.py", line 162, in urlopen return opener.open(url, data, timeout) File "/usr/lib/python3.5/urllib/request.py", line 463, in open req = meth(req) File "/usr/lib/python3.5/urllib/request.py", line 1171, in do_request_ if not request.has_header('Content-type'): File "/usr/lib/python3.5/urllib/request.py", line 356, in has_header return (header_name in self.headers or BytesWarning: Comparison between bytes and string I believe the “urllib.request” module is only written with text (str) field names in mind, not byte strings. Same for http.client.HTTPConnection.request(headers=...). But the lower-level HTTPConnection.putheader method has special code to handle byte strings: <http://svn.python.org/view?view=revision&revision=58823>, although this is not documented either. ---------- nosy: +martin.panter _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue29891> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com