服务器设置和浏览器检查
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
无论我发送的是空字符串还是非空字符串。418
511
200
- 使用状态码
403
,404
,500
,501
,502
,504
或505
将在浏览器上创建特定的浏览器消息,但仅在发送空字符串时。 - 无论我发送的是空字符串还是非空字符串,使用状态码
407
都会返回特定的浏览器消息(显示错误)。323