Python SSL服务器为我提供了#34; 501不支持的方法GET"

时间:2016-10-13 22:04:16

标签: python python-3.x simplehttpserver

我跟着this link建立了一个带SSL的简单文件服务器。

from http.server import HTTPServer, BaseHTTPRequestHandler
import ssl

httpd = HTTPServer(('localhost', 4443), BaseHTTPRequestHandler)

# openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
httpd.socket = ssl.wrap_socket (httpd.socket, keyfile="key.pem", certfile='cert.pem', server_side=True)

httpd.serve_forever()

我已成功创建证书,key.pemcert.pem文件路径很酷,我可以使用python server.py启动服务器。我被要求输入密码,输入密码,然后冻结一点,然后它就好了。

但是,当我输入https://localhost:4443/index.html之类的某些网址时,我得到 500不支持的方法GET。错误代码说明:HTTPStatus.NOT_IMPLEMENTED - 服务器不支持此操作。我是否需要做更多工作才能使我的服务器服务于当前目录?到目前为止,我刚刚在Mac上使用python -m http.server 8000SimpleHTTPServer。)我正在使用Python 3.

这是一个留在本地的遗嘱,所以不要担心PEM文件和通过它暴露的服务器脚本(如果它有效!)。我也很好,证书不受信任,并指示Chrome无论如何都要访问该页面。我只是需要它来允许我访问相机而无需在合法证书的某个地方部署我的应用程序。

2 个答案:

答案 0 :(得分:3)

来自docs

  

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

     
    

此类用于处理到达服务器的HTTP请求。它本身不能响应任何实际的HTTP请求;它必须是子类来处理每个请求方法(例如GET或POST)。

  

请尝试使用SimpleHTTPRequestHandler,例如,

httpd = socketserver.TCPServer(('localhost', 4443), SimpleHTTPRequestHandler)

答案 1 :(得分:-2)

请使用

httpd = HTTPServer(('localhost', 4443), BaseHTTPRequestHandler)

取而代之的是与SimpleHttpServer行为相同。