| |
| """ |
| Simple HTTP server with Cross-Origin Isolation headers for SharedArrayBuffer. |
| This enables multi-threading in ONNX Runtime Web for much better performance. |
| """ |
|
|
| import http.server |
| import socketserver |
| import sys |
|
|
| PORT = int(sys.argv[1]) if len(sys.argv) > 1 else 8080 |
|
|
|
|
| class CORSRequestHandler(http.server.SimpleHTTPRequestHandler): |
| def end_headers(self): |
| |
| self.send_header('Cross-Origin-Opener-Policy', 'same-origin') |
| self.send_header('Cross-Origin-Embedder-Policy', 'require-corp') |
| |
| self.send_header('Access-Control-Allow-Origin', '*') |
| super().end_headers() |
|
|
| def do_OPTIONS(self): |
| self.send_response(200) |
| self.end_headers() |
|
|
|
|
| if __name__ == '__main__': |
| class ReusableTCPServer(socketserver.TCPServer): |
| allow_reuse_address = True |
| with ReusableTCPServer(("", PORT), CORSRequestHandler) as httpd: |
| print(f"Serving at http://localhost:{PORT}") |
| print("Cross-Origin Isolation headers enabled for multi-threading") |
| print("Press Ctrl+C to stop") |
| try: |
| httpd.serve_forever() |
| except KeyboardInterrupt: |
| print("\nShutting down...") |
|
|