1#!/usr/bin/env python3 2""" 3Runs a COOE/COEP local webserver for testing emscripten deployment. 4Note: 5 Browsers that have implemented and enabled SharedArrayBuffer are gating it behind Cross Origin Opener Policy (COOP) 6 and Cross Origin Embedder Policy (COEP) headers. 7 Pthreads code will not work in deployed environment unless these headers are correctly set. 8 see: https://emscripten.org/docs/porting/pthreads.html 9""" 10 11from http.server import HTTPServer, SimpleHTTPRequestHandler 12 13 14class RequestHandler(SimpleHTTPRequestHandler): 15 def end_headers(self): 16 self.send_header("Access-Control-Allow-Origin", "*") 17 self.send_header("Cross-Origin-Embedder-Policy", "require-corp") 18 self.send_header("Cross-Origin-Opener-Policy", "same-origin") 19 super().end_headers() 20 21 22def main(): 23 24 addr = "127.0.0.1" 25 port = 8080 26 httpd = HTTPServer((addr, port), RequestHandler) 27 print("Serving http at http://{}:{}".format(addr, port)) 28 29 try: 30 httpd.serve_forever() 31 except KeyboardInterrupt: 32 print("\nBye.") 33 34 35if __name__ == "__main__": 36 main() 37