#13295: http.server now produces valid HTML 4.01 strict.
This commit is contained in:
parent
23e275b3ad
commit
ca897e960a
|
@ -105,6 +105,7 @@ import copy
|
||||||
DEFAULT_ERROR_MESSAGE = """\
|
DEFAULT_ERROR_MESSAGE = """\
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||||
"http://www.w3.org/TR/html4/strict.dtd">
|
"http://www.w3.org/TR/html4/strict.dtd">
|
||||||
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
||||||
<title>Error response</title>
|
<title>Error response</title>
|
||||||
|
@ -734,10 +735,16 @@ class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
|
||||||
list.sort(key=lambda a: a.lower())
|
list.sort(key=lambda a: a.lower())
|
||||||
r = []
|
r = []
|
||||||
displaypath = html.escape(urllib.parse.unquote(self.path))
|
displaypath = html.escape(urllib.parse.unquote(self.path))
|
||||||
r.append('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">')
|
enc = sys.getfilesystemencoding()
|
||||||
r.append("<html>\n<title>Directory listing for %s</title>\n" % displaypath)
|
title = 'Directory listing for %s' % displaypath
|
||||||
r.append("<body>\n<h2>Directory listing for %s</h2>\n" % displaypath)
|
r.append('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" '
|
||||||
r.append("<hr>\n<ul>\n")
|
'"http://www.w3.org/TR/html4/strict.dtd">')
|
||||||
|
r.append('<html>\n<head>')
|
||||||
|
r.append('<meta http-equiv="Content-Type" '
|
||||||
|
'content="text/html; charset=%s">' % enc)
|
||||||
|
r.append('<title>%s</title>\n</head>' % title)
|
||||||
|
r.append('<body>\n<h1>%s</h1>' % title)
|
||||||
|
r.append('<hr>\n<ul>')
|
||||||
for name in list:
|
for name in list:
|
||||||
fullname = os.path.join(path, name)
|
fullname = os.path.join(path, name)
|
||||||
displayname = linkname = name
|
displayname = linkname = name
|
||||||
|
@ -748,11 +755,10 @@ class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
|
||||||
if os.path.islink(fullname):
|
if os.path.islink(fullname):
|
||||||
displayname = name + "@"
|
displayname = name + "@"
|
||||||
# Note: a link to a directory displays with @ and links with /
|
# Note: a link to a directory displays with @ and links with /
|
||||||
r.append('<li><a href="%s">%s</a>\n'
|
r.append('<li><a href="%s">%s</a></li>'
|
||||||
% (urllib.parse.quote(linkname), html.escape(displayname)))
|
% (urllib.parse.quote(linkname), html.escape(displayname)))
|
||||||
r.append("</ul>\n<hr>\n</body>\n</html>\n")
|
r.append('</ul>\n<hr>\n</body>\n</html>\n')
|
||||||
enc = sys.getfilesystemencoding()
|
encoded = '\n'.join(r).encode(enc)
|
||||||
encoded = ''.join(r).encode(enc)
|
|
||||||
f = io.BytesIO()
|
f = io.BytesIO()
|
||||||
f.write(encoded)
|
f.write(encoded)
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
|
|
|
@ -350,6 +350,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #13295: http.server now produces valid HTML 4.01 strict.
|
||||||
|
|
||||||
- Issue #2892: preserve iterparse events in case of SyntaxError.
|
- Issue #2892: preserve iterparse events in case of SyntaxError.
|
||||||
|
|
||||||
- Issue #13287: urllib.request and urllib.error now contains a __all__ and
|
- Issue #13287: urllib.request and urllib.error now contains a __all__ and
|
||||||
|
|
Loading…
Reference in New Issue