diff --git a/Doc/library/basehttpserver.rst b/Doc/library/basehttpserver.rst index 2e8d6a38068..0f058a18e16 100644 --- a/Doc/library/basehttpserver.rst +++ b/Doc/library/basehttpserver.rst @@ -122,6 +122,15 @@ to a handler. Code to create and run the server looks like this:: class variable. +.. attribute:: BaseHTTPRequestHandler.error_content_type + + Specifies the Content-Type HTTP header of error responses sent to the client. + The default value is ``'text/html'``. + + .. versionadded:: 2.6 + Previously, the content type was always ``'text/html'``. + + .. attribute:: BaseHTTPRequestHandler.protocol_version This specifies the HTTP protocol version used in responses. If set to diff --git a/Lib/BaseHTTPServer.py b/Lib/BaseHTTPServer.py index e4e1a148b8c..97d800cb390 100644 --- a/Lib/BaseHTTPServer.py +++ b/Lib/BaseHTTPServer.py @@ -76,7 +76,7 @@ import socket # For gethostbyaddr() import mimetools import SocketServer -# Default error message +# Default error message template DEFAULT_ERROR_MESSAGE = """\ Error response @@ -89,6 +89,8 @@ DEFAULT_ERROR_MESSAGE = """\ """ +DEFAULT_ERROR_CONTENT_TYPE = "text/html" + def _quote_html(html): return html.replace("&", "&").replace("<", "<").replace(">", ">") @@ -342,13 +344,14 @@ class BaseHTTPRequestHandler(SocketServer.StreamRequestHandler): content = (self.error_message_format % {'code': code, 'message': _quote_html(message), 'explain': explain}) self.send_response(code, message) - self.send_header("Content-Type", "text/html") + self.send_header("Content-Type", self.error_content_type) self.send_header('Connection', 'close') self.end_headers() if self.command != 'HEAD' and code >= 200 and code not in (204, 304): self.wfile.write(content) error_message_format = DEFAULT_ERROR_MESSAGE + error_content_type = DEFAULT_ERROR_CONTENT_TYPE def send_response(self, code, message=None): """Send the response header and log the response code. diff --git a/Misc/NEWS b/Misc/NEWS index 055f7689651..180d25ae6ec 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -436,6 +436,9 @@ Core and builtins Library ------- +- #1492: The content type of BaseHTTPServer error messages can now be + overridden. + - Issue 1781: ConfigParser now does not let you add the "default" section (ignore-case)