我试图在本地网络上启动一个简单的目录服务器但是我收到了这个错误
错误回复
错误代码:501
消息:不支持的方法(' GET')。
错误代码说明:HTTPStatus.NOT_IMPLEMENTED - 服务器没有 支持这项行动。
这是https://docs.python.org/3/library/http.server.html给出的示例如果我从命令行运行它,它就可以运行python3 -m http.server。我需要随着时间的推移控制这个服务器,所以我需要打开它一段时间并自动关闭它
from http.server import BaseHTTPRequestHandler, HTTPServer
def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
server_address = ('0.0.0.0', 8000)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
答案 0 :(得分:1)
答案在您链接到的documentation:
HTTPServer
必须为RequestHandlerClass
实例化,该模块提供三种不同的变体:
class http.server.BaseHTTPRequestHandler(
request, client_address, server
)
此类用于处理到达的HTTP请求 服务器。 本身,它无法响应任何实际的HTTP请求;它 必须进行子类化以处理每个请求方法(例如
GET
或POST
)即可。 ...
对于您的情况,您应该使用http.server.SimpleHTTPRequestHandler
代替:
class http.server.SimpleHTTPRequestHandler(
request, client_address, server
)
此类直接提供当前目录及以下文件 将目录结构映射到HTTP请求。