diff --git a/lib/http/__init__.py b/lib/http/__init__.py
index 03e77c9bc97c45b75d3b94796ad704bfb493449b..7973b0fe14683eaf671faf3375c11249bc7e222e 100644
--- a/lib/http/__init__.py
+++ b/lib/http/__init__.py
@@ -111,10 +111,10 @@ class HttpException(Exception):
   code = None
   message = None
 
-  def __init__(self, message=None):
+  def __init__(self, message=None, headers=None):
     Exception.__init__(self)
-    if message is not None:
-      self.message = message
+    self.message = message
+    self.headers = headers
 
 
 class HttpBadRequest(HttpException):
diff --git a/lib/http/server.py b/lib/http/server.py
index 2b87d6716abad6e447de595545258d8e35a12180..a671591f6057ddaa8082c04f9878798cbcd8f276 100644
--- a/lib/http/server.py
+++ b/lib/http/server.py
@@ -388,9 +388,13 @@ class _HttpServerRequestExecutor(object):
       }
 
     self.response_msg.start_line.code = err.code
-    self.response_msg.headers = {
-      http.HTTP_CONTENT_TYPE: self.error_content_type,
-      }
+
+    headers = {}
+    if err.headers:
+      headers.update(err.headers)
+    headers[http.HTTP_CONTENT_TYPE] = self.error_content_type
+    self.response_msg.headers = headers
+
     self.response_msg.body = self.error_message_format % values