Message183100
Testing your code in Listing 1
→ curl -sI http://localhost:9000/
HTTP/1.0 501 Unsupported method ('HEAD')
Server: BaseHTTP/0.6 Python/3.3.0
Date: Tue, 26 Feb 2013 23:38:32 GMT
Content-Type: text/html;charset=utf-8
Connection: close
So this is normal, http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-22#section-6.6.2
except that it would be better to use "501 Not Implemented" through the prose is optional. The content-type is also kind of useless. That would deserve to open another bug.
And
→ curl http://localhost:9000/
Server: BaseHTTP/0.6 Python/3.3.0
Date: Tue, 26 Feb 2013 23:39:46 GMT
Content-Type: text/html;charset=utf-8
Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Error response</title>
</head>
<body>
<h1>Error response</h1>
<p>Error code: 500</p>
<p>Message: Traceback (most recent call last):
File "server.py", line 9, in do_GET
assert(False)
AssertionError
.</p>
<p>Error code explanation: 500 - Server got itself in trouble.</p>
</body>
</html>
OK. The server is answering with HTTP/1.0 and then a Traceback… which has nothing to do here.
We can see that in more details with a telnet
→ telnet localhost 9000
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
Host: localhost:9000
HTTP/1.0 500 Traceback (most recent call last):
File "server.py", line 9, in do_GET
assert(False)
AssertionError
Server: BaseHTTP/0.6 Python/3.3.0
Date: Tue, 26 Feb 2013 23:49:04 GMT
Content-Type: text/html;charset=utf-8
Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Error response</title>
</head>
<body>
<h1>Error response</h1>
<p>Error code: 500</p>
<p>Message: Traceback (most recent call last):
File "server.py", line 9, in do_GET
assert(False)
AssertionError
.</p>
<p>Error code explanation: 500 - Server got itself in trouble.</p>
</body>
</html>
Note that when not sending the traceback with the following code
#!/usr/bin/env python3.3
import http.server
import traceback
class httphandler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
try:
assert(False)
except:
self.send_error(500)
if __name__=='__main__':
addr=('',9000)
http.server.HTTPServer(addr,httphandler).serve_forever()
Everything is working well.
→ telnet localhost 9000
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
Host: localhost:9000
HTTP/1.0 500 Internal Server Error
Server: BaseHTTP/0.6 Python/3.3.0
Date: Tue, 26 Feb 2013 23:51:46 GMT
Content-Type: text/html;charset=utf-8
Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Error response</title>
</head>
<body>
<h1>Error response</h1>
<p>Error code: 500</p>
<p>Message: Internal Server Error.</p>
<p>Error code explanation: 500 - Server got itself in trouble.</p>
</body>
</html>
Connection closed by foreign host.
I'm looking at http://hg.python.org/cpython/file/3.3/Lib/http/server.py#l404
For the second part of your message. I don't think the two issues should be mixed. Maybe open another bug report. |
|
Date |
User |
Action |
Args |
2013-02-27 00:05:13 | karlcow | set | recipients:
+ karlcow, orsenthil, Paul.Upchurch |
2013-02-27 00:05:13 | karlcow | set | messageid: <1361923513.29.0.453398728976.issue12921@psf.upfronthosting.co.za> |
2013-02-27 00:05:13 | karlcow | link | issue12921 messages |
2013-02-27 00:05:12 | karlcow | create | |
|