Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
allendowney
GitHub Repository: allendowney/cpython
Path: blob/main/Tools/wasm/wasm_webserver.py
12 views
1
#!/usr/bin/env python
2
import argparse
3
from http import server
4
5
parser = argparse.ArgumentParser(
6
description="Start a local webserver with a Python terminal."
7
)
8
parser.add_argument(
9
"--port", type=int, default=8000, help="port for the http server to listen on"
10
)
11
parser.add_argument(
12
"--bind", type=str, default="127.0.0.1", help="Bind address (empty for all)"
13
)
14
15
16
class MyHTTPRequestHandler(server.SimpleHTTPRequestHandler):
17
extensions_map = server.SimpleHTTPRequestHandler.extensions_map.copy()
18
extensions_map.update(
19
{
20
".wasm": "application/wasm",
21
}
22
)
23
24
def end_headers(self):
25
self.send_my_headers()
26
super().end_headers()
27
28
def send_my_headers(self):
29
self.send_header("Cross-Origin-Opener-Policy", "same-origin")
30
self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
31
32
33
def main():
34
args = parser.parse_args()
35
if not args.bind:
36
args.bind = None
37
38
server.test(
39
HandlerClass=MyHTTPRequestHandler,
40
protocol="HTTP/1.1",
41
port=args.port,
42
bind=args.bind,
43
)
44
45
if __name__ == "__main__":
46
main()
47
48