在Python3 Mockserver

时间:2017-03-05 22:23:26

标签: python python-3.x ssl pyopenssl basehttprequesthandler

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

1 个答案:

答案 0 :(得分:0)

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