服务器设置和浏览器检查
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
class customHTTPServer(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('<HTML><body>Get!</body></HTML>')
return
server = HTTPServer(('',8080),customHTTPServer)
print 'server started at port 8080'
server.serve_forever()
现在,当我http://localhost:8080使用浏览器访问时,我可以看到预期的Get!.
意外观察
测试 1:
现在我在我的服务器中使用不同的状态码进行了测试。我试过这些状态码:301, 302, 400, 402, 403, 404, 405, 406, 407, 408, 418, 500, 501, 502, 504,505和511.
(Q1)奇怪的是,当使用不同的状态码(除了407)我得到与使用状态码相同的行为200。这是为什么?
测试 2
其次,我替换self.wfile.write('<HTML><body>Get!</body></HTML>')
了self.wfile.write('')我在第一次测试中测试的所有不同状态代码。当我使用状态码403, 404, 500, 501, 502,504或者505我现在在浏览器上收到特定的浏览器消息 ( 403 Forbidden, 404 not found, ...)。
(Q2) 为什么我只收到使用这些状态码的特定浏览器消息,而没有使用其他状态码?
概括
我可以区分 3 种类型的行为:
- 使用状态码
301,302,400,402,405,406,或与使用状态码没有区别,408无论我发送的是空字符串还是非空字符串。418511200 - 使用状态码
403,404,500,501,502,504或505将在浏览器上创建特定的浏览器消息,但仅在发送空字符串时。 - 无论我发送的是空字符串还是非空字符串,使用状态码
407都会返回特定的浏览器消息(显示错误)。323