mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Issue #25738: Don’t send message body for 205 Reset Content
Patch by Susumu Koshiba.
This commit is contained in:
parent
4e50553823
commit
e42e129ebe
5 changed files with 73 additions and 11 deletions
|
@ -450,20 +450,30 @@ class BaseHTTPRequestHandler(socketserver.StreamRequestHandler):
|
|||
if explain is None:
|
||||
explain = longmsg
|
||||
self.log_error("code %d, message %s", code, message)
|
||||
# using _quote_html to prevent Cross Site Scripting attacks (see bug #1100201)
|
||||
content = (self.error_message_format %
|
||||
{'code': code, 'message': _quote_html(message), 'explain': _quote_html(explain)})
|
||||
body = content.encode('UTF-8', 'replace')
|
||||
self.send_response(code, message)
|
||||
self.send_header("Content-Type", self.error_content_type)
|
||||
self.send_header('Connection', 'close')
|
||||
self.send_header('Content-Length', int(len(body)))
|
||||
|
||||
# Message body is omitted for cases described in:
|
||||
# - RFC7230: 3.3. 1xx, 204(No Content), 304(Not Modified)
|
||||
# - RFC7231: 6.3.6. 205(Reset Content)
|
||||
body = None
|
||||
if (code >= 200 and
|
||||
code not in (HTTPStatus.NO_CONTENT,
|
||||
HTTPStatus.RESET_CONTENT,
|
||||
HTTPStatus.NOT_MODIFIED)):
|
||||
# HTML encode to prevent Cross Site Scripting attacks
|
||||
# (see bug #1100201)
|
||||
content = (self.error_message_format % {
|
||||
'code': code,
|
||||
'message': _quote_html(message),
|
||||
'explain': _quote_html(explain)
|
||||
})
|
||||
body = content.encode('UTF-8', 'replace')
|
||||
self.send_header("Content-Type", self.error_content_type)
|
||||
self.send_header('Content-Length', int(len(body)))
|
||||
self.end_headers()
|
||||
|
||||
if (self.command != 'HEAD' and
|
||||
code >= 200 and
|
||||
code not in (
|
||||
HTTPStatus.NO_CONTENT, HTTPStatus.NOT_MODIFIED)):
|
||||
if self.command != 'HEAD' and body:
|
||||
self.wfile.write(body)
|
||||
|
||||
def send_response(self, code, message=None):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue