1#!/usr/bin/env python3 2 3""" 4An extension of Python's simple HTTP server that sets the Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy 5HTTP headers to same-origin and require-corp respectively. 6 7Listens on localhost:8080 by default but you can override this by passing a command line arg, e.g.: 8 ./webserver.py localhost:9001 9""" 10 11from http.server import HTTPServer, SimpleHTTPRequestHandler 12import sys 13 14 15class Handler(SimpleHTTPRequestHandler): 16 def __init__(self, *args, **kwargs): 17 super().__init__(*args, **kwargs) 18 19 # Overridden to set headers 20 def send_response(self, code, message=None): 21 super().send_response(code, message) 22 23 self.send_header("Cross-Origin-Opener-Policy", "same-origin") 24 self.send_header("Cross-Origin-Embedder-Policy", "require-corp") 25 26 27def run(host, port): 28 httpd = HTTPServer((host, port), Handler) 29 httpd.serve_forever() 30 31 32def main(): 33 server_address = "localhost:8080" 34 if len(sys.argv) > 1: 35 server_address = sys.argv[1] 36 37 (host, port) = server_address.split(":") 38 39 print(f"Starting webserver listening on http://{host}:{port}/") 40 41 run(host, int(port)) 42 43 44if __name__ == "__main__": 45 main()