2017-03-05 20 views
0

我们有这个模拟服务器现在正在服务https://请求,如果我们删除了ssl包装(ssl.wrap_socket(myServer.socket,keyfile ='key.pem',certfile =' cert.pem',server_side = True),服务器只提供http://请求,有什么办法可以让这个服务器支持这两个请求,我们的目标是当服务器收到一个http://请求时,它会自动将其转换为HTTPS://和处理请求在Python3中添加https重定向Mockserver

预先感谢支持

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

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

+0

谢谢..我们也在想这可能是解决方案。你能指导我如何编码看起来像这样吗? – nhrcpt