Skip to content

Instantly share code, notes, and snippets.

@jdmichaud
Last active October 3, 2021 09:49
Show Gist options
  • Save jdmichaud/903b7c70476f7a41300a1d46415ec264 to your computer and use it in GitHub Desktop.
Save jdmichaud/903b7c70476f7a41300a1d46415ec264 to your computer and use it in GitHub Desktop.
Python based HTTP server with CORS
#!/usr/bin/env python2
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
BaseHTTPServer.test(CORSRequestHandler, BaseHTTPServer.HTTPServer)
#!/usr/bin/env python3
import http.server
import socketserver
IP = "0.0.0.0"
PORT = 8000
class CORSRequestHandler(http.server.SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header('Access-Control-Allow-Origin', '*')
# For SharedArrayBuffer: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements
self.send_header('Cross-Origin-Opener-Policy', 'same-origin')
self.send_header('Cross-Origin-Embedder-Policy', 'require-corp')
http.server.SimpleHTTPRequestHandler.end_headers(self)
Handler = CORSRequestHandler
with socketserver.TCPServer((IP, PORT), Handler) as httpd:
print(f'Serving HTTP with CORS on {IP} port {PORT} (http://{IP}:{PORT}/) ...')
httpd.serve_forever()
#!/usr/bin/env python3
import http.server
import socketserver
import ssl
IP = "0.0.0.0"
PORT = 4443
class CORSRequestHandler(http.server.SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header('Access-Control-Allow-Origin', '*')
# For SharedArrayBuffer: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements
self.send_header('Cross-Origin-Opener-Policy', 'same-origin')
self.send_header('Cross-Origin-Embedder-Policy', 'require-corp')
http.server.SimpleHTTPRequestHandler.end_headers(self)
Handler = CORSRequestHandler
# Create a certificate with:
# openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/[email protected]"
with socketserver.TCPServer((IP, PORT), Handler) as httpd:
httpd.socket = ssl.wrap_socket(httpd.socket, keyfile='key.pem', certfile='cert.pem', server_side=True)
print(f'Serving HTTP with CORS on {IP} port {PORT} (http://{IP}:{PORT}/) ...')
httpd.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment