HTTPS-соединение Python по-прежнему загружает контент, пока он не прерван KeyboardInterrupted - PullRequest
0 голосов
/ 16 декабря 2018

Может кто-нибудь сказать мне, что решение для этого?Когда я запускаю его и загружаю из браузера ... Он только загружается и никогда не отображает "Hello Word!"text.

Но текст появится в браузере после того, как я выключу сервер, вызвав KeyboardInterrupt.

PS: SSL включен в интерпретаторе python 2.6 в Linux.Кроме того, он не работает в Windows 7.

Вот код:

#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
import ssl
import sys

PORT_NUMBER = int(sys.argv[1])

#This class will handles any incoming request from the browser 
class myHandler(BaseHTTPRequestHandler):
    #Handler for the GET requests
    def do_GET(self):
        print(self.requestline)
        #print(self.rfile.read(content_length))
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        # Send the html message
        self.wfile.write("Hello World !".encode())
        return

try:
    #Create a web server and define the handler to manage the
    #incoming request
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    server.socket = ssl.wrap_socket(server.socket, certfile='cert.pem',keyfile='key.pem',  server_side=True)
    print 'Started httpserver on port ' , PORT_NUMBER

    #Wait forever for incoming htto requests
    server.serve_forever()

except KeyboardInterrupt:
    print '^C received, shutting down the web server'
    server.socket.close()

, чтобы запустить это в Python 2.x, команда: python this_code.py [port]

Пример:

python this_code.py 8080

Затем перейдите в браузер с адресом: https://localhost:8080/

Если я удалю эту строку, она будет работать, но она работает только по протоколу HTTPа не в HTTPS (который я собираюсь запустить):

server.socket = ssl.wrap_socket(server.socket, certfile='cert.pem',keyfile='key.pem',  server_side=True)
...