2017-03-05 87 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