Skip to content

Instantly share code, notes, and snippets.

@sinistersnare
Created April 11, 2023 14:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sinistersnare/c401cbc854e8e8a2c6df2d05fe51e9f9 to your computer and use it in GitHub Desktop.
Save sinistersnare/c401cbc854e8e8a2c6df2d05fe51e9f9 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
"""
A simple HTTP Server (a la `python3 -m http.server`)
that sets CORS handlers correctly (not a la `python3 -m http.server`)
This server can be used to give files to Prospective.
TODO: add -d argmuent to choose directory to serve
Code: https://fpira.com/blog/2020/05/python-http-server-with-cors
"""
from http.server import HTTPServer, SimpleHTTPRequestHandler
import sys
class CORSRequestHandler(SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header('Access-Control-Allow-Origin', '*')
self.send_header('Access-Control-Allow-Methods', '*')
self.send_header('Access-Control-Allow-Headers', '*')
self.send_header('Cache-Control', 'no-store, no-cache, must-revalidate')
return super(CORSRequestHandler, self).end_headers()
def do_OPTIONS(self):
self.send_response(200)
self.end_headers()
host = sys.argv[1] if len(sys.argv) > 2 else '0.0.0.0'
port = int(sys.argv[len(sys.argv)-1]) if len(sys.argv) > 1 else 8080
print("Listening on {}:{}".format(host, port))
httpd = HTTPServer((host, port), CORSRequestHandler)
httpd.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment