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)