我们有这个现在服务于https://请求的模拟服务器,如果我们删除了ssl包装(ssl.wrap_socket(myServer.socket,keyfile ='key.pem',certfile ='cert.pem',server_side) = True),服务器只提供http://请求。有什么方法可以让这个服务器支持这两个请求。我们的目标是当服务器收到http://请求时,它会自动将其转换为https ://并处理请求。
提前感谢您的支持
from http.server import HTTPServer, BaseHTTPRequestHandler
import ssl
class Mock(BaseHTTPRequestHandler):
-------------------
-------------------
def main():
global hostname, port
hostname = "127.0.0.1"
port = 8000
myServer = HTTPServer((hostname, port), Mock)
myServer.socket = ssl.wrap_socket(myServer.socket,keyfile='key.pem',certfile= 'cert.pem', server_side=True)
myServer.serve_forever()
if __name__ =="__main__":
main()
答案 0 :(得分:0)
如果HTTP和HTTPS服务器需要不同的功能,那么将它们设为两个不同的实例是有意义的。为什么不再生成仅 HTTP的第二个HTTPServer
,它只返回302状态,Location
标头指向HTTPS模拟服务器(但使用相同的路径)。< / p>