0

我们有这个正在服务 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()
4

1 回答 1

0

如果 HTTP 和 HTTPS 服务器需要不同的功能,那么让它们成为两个不同的实例是有意义的。为什么不制作第二个HTTP HTTPServer它只返回一个 302 状态,Location标头指向 HTTPS 模拟服务器(但使用相同的路径)。

于 2017-03-06T05:12:40.887 回答