28 lines
979 B
Python
28 lines
979 B
Python
#!/usr/bin/env python3
|
|
import argparse
|
|
from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer
|
|
|
|
|
|
class IsolatedHandler(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("Cross-Origin-Resource-Policy", "same-origin")
|
|
super().end_headers()
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--port", type=int, default=8000)
|
|
parser.add_argument("--host", default="0.0.0.0")
|
|
args = parser.parse_args()
|
|
server = ThreadingHTTPServer((args.host, args.port), IsolatedHandler)
|
|
print(f"Serving on http://{args.host}:{args.port}/web/")
|
|
print("Note: WASM pthreads need a secure context — use localhost or HTTPS; a"
|
|
" bare LAN IP over HTTP is not cross-origin isolated.")
|
|
server.serve_forever()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|