From fe83bd5b7179fb5a7f32f16962c48b52b09e33c5 Mon Sep 17 00:00:00 2001 From: mleku Date: Fri, 14 Nov 2025 19:07:11 +0000 Subject: [PATCH] fix CORS headers --- .gitignore | 1 + main.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/.gitignore b/.gitignore index 02e0cb3..ee90bd4 100644 --- a/.gitignore +++ b/.gitignore @@ -87,6 +87,7 @@ node_modules/** !.gitignore !version !out.jsonl +!Dockerfile* # ...even if they are in subdirectories !*/ /blocklist.json diff --git a/main.go b/main.go index a630372..f63ed52 100644 --- a/main.go +++ b/main.go @@ -478,6 +478,14 @@ func setProxy(mapping map[string]string) (http.Handler, error) { rp := newSingleHostReverseProxy(u) rp.ErrorLog = log2.New(io.Discard, "", 0) rp.BufferPool = bufPool{} + rp.ModifyResponse = func(resp *http.Response) error { + // Add CORS headers to all proxied responses + resp.Header.Set("Access-Control-Allow-Origin", "*") + resp.Header.Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS") + resp.Header.Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, Upgrade, Connection, Sec-WebSocket-Key, Sec-WebSocket-Version, Sec-WebSocket-Protocol, Sec-WebSocket-Extensions") + resp.Header.Set("Access-Control-Max-Age", "86400") + return nil + } mux.Handle(hn+"/", rp) addFaviconHandler(hn, mux) continue @@ -500,6 +508,14 @@ func setProxy(mapping map[string]string) (http.Handler, error) { return net.DialTimeout(network, ba, 5*time.Second) }, }, + ModifyResponse: func(resp *http.Response) error { + // Add CORS headers to all proxied responses + resp.Header.Set("Access-Control-Allow-Origin", "*") + resp.Header.Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS") + resp.Header.Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, Upgrade, Connection, Sec-WebSocket-Key, Sec-WebSocket-Version, Sec-WebSocket-Protocol, Sec-WebSocket-Extensions") + resp.Header.Set("Access-Control-Max-Age", "86400") + return nil + }, ErrorLog: log2.New(os.Stderr, "reverse", 0), BufferPool: bufPool{}, }