【问题标题】:http.server not serving pages as per example from python.org根据 python.org 的示例,http.server 不提供页面
【发布时间】:2017-04-15 07:17:30
【问题描述】:

我正在尝试在本地网络上启动一个简单的目录服务器,但是我收到了这个错误

错误响应

错误代码: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()

【问题讨论】:

    标签: python httpserver


    【解决方案1】:

    答案在您链接到的documentation 中:

    HTTPServer 必须被赋予RequestHandlerClass on 实例化,该模块提供了三种不同的变体:

    class http.server.BaseHTTPRequestHandler(request, client_address, server)

    该类用于处理到达 服务器。 它本身无法响应任何实际的 HTTP 请求;它 必须子类化以处理每个请求方法(例如 GETPOST)。 ...

    对于您的情况,您应该改用http.server.SimpleHTTPRequestHandler

    class http.server.SimpleHTTPRequestHandler(request, client_address, server)

    该类直接提供当前目录及以下目录中的文件 将目录结构映射到 HTTP 请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多