Я следил за this link, чтобы создать простой файловый сервер с SSL.Сервер Python SSL дает мне «501 Unsupported method GET»
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.pem
и cert.pem
пути к файлам прохладны, и я могу запустить сервер с помощью python server.py
. Меня спрашивают пароль, вводят его, затем он замерзает немного, а затем, кажется, запускается.
Однако, когда я ввожу какой-то URL-адрес, например https://localhost:4443/index.html
, я получаю 500 Неподдерживаемый метод GET. Объяснение кода ошибки: HTTPStatus.NOT_IMPLEMENTED - сервер не поддерживает эту операцию. Нужно ли мне что-то делать, чтобы мой сервер обслуживал текущий каталог? До сих пор я просто использовал python -m http.server 8000
(SimpleHTTPServer
когда на Mac.) Я использую Python 3.
Это будет оставаться местной, так что не беспокойтесь о PEM
файлы и сценарии сервера, подвергавшихся влиянию через него (если это работал!). Я также согласен с тем, что сертификат не доверен, и ему приказано Chrome посещать страницу в любом случае. Мне просто нужно, чтобы я мог получить доступ к камере без необходимости развертывать мое приложение где-нибудь с законным сертификатом.
Ссылка содержит код, который не является законным, для python3. То, что вы хотите, это SimpleHTTPRequestHandler, и вы пытаетесь использовать BaseHTTPRequestHandler, поэтому, возможно, это поддельная статья, и не так просто, как утверждает автор. Пробовал и заставлял его работать, но он не работал для python 2 или 3 по ссылке. DIY! – Simon