I am new to Python, so i am referring to some stack overflow Questions and tried few things. So i am able to create a HTTP server but when i am to create a HTTPS server it is not Starting the Server. I also need to use GET and POST.
This is the HTTPS Code:-
from http.server import HTTPServer, SimpleHTTPRequestHandler
import ssl
httpd = HTTPServer(('localhost', 1443), SimpleHTTPRequestHandler)
sslctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
print("SSL Context Created")
sslctx.check_hostname = False
print("Removed Host Check")
sslctx.load_cert_chain(certfile='cert.pem', keyfile="key.pem")
print("Loaded Cert File")
httpd.socket = sslctx.wrap_socket(httpd.socket, server_side=True)
print("Added Socket")
httpd.serve_forever()
print("Server Start")
OUTPUT :-
python .\main.py
SSL Context Created
Removed Host Check
Loaded Cert File
Added Socket
This is the HTTP Code (Which is Working) :-
from http.server import HTTPServer, BaseHTTPRequestHandler
from io import BytesIO
import json
import ssl
import os
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
index = open('index.html', 'r')
self.wfile.write(index.read().encode())
def do_POST(self):
content_length = int(self.headers['Content-Length'])
body = self.rfile.read(content_length)
newBody = str(body)[2:len(body) + 2]
print(body)
print(newBody)
formatedJson = json.loads(newBody)
print(formatedJson)
print(formatedJson["prompt"])
self.send_response(200)
self.end_headers()
response = BytesIO()
response.write(('This is POST request. ').encode())
response.write(('Received: ').encode())
response.write(body)
self.wfile.write(response.getvalue())
def end_headers(self):
self.send_header('Access-Control-Allow-Origin', '*')
BaseHTTPRequestHandler.end_headers(self)
def do_OPTIONS(self):
self.send_response(200, "ok")
self.send_header('Access-Control-Allow-Methods', 'GET, OPTIONS')
self.send_header("Access-Control-Allow-Headers", "X-Requested-With")
self.send_header("Access-Control-Allow-Headers", "Content-Type")
self.end_headers()
httpd = HTTPServer(('localhost', 8879), SimpleHTTPRequestHandler)
try:
httpd.serve_forever()
print("Server Start")
except KeyboardInterrupt:
pass
httpd.server_close()
print("Server stopped.")