summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTom <[email protected]>2026-01-02 00:35:04 +0700
committerGitHub <[email protected]>2026-01-01 11:35:04 -0600
commitdc8586371cdd75f2cf8d07e317a3688ec6e02794 (patch)
tree06a8000ff3b1641b624d828795518543da9116b8
parent41f9a58c27d36fed9d58dbaccb6322fe6448583b (diff)
downloadopencode-dc8586371cdd75f2cf8d07e317a3688ec6e02794.tar.gz
opencode-dc8586371cdd75f2cf8d07e317a3688ec6e02794.zip
fix(server): add Content-Type headers for proxied static assets (#6587)
-rw-r--r--packages/opencode/src/server/server.ts34
1 files changed, 33 insertions, 1 deletions
diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts
index f31b8ec44..acd4ad5c4 100644
--- a/packages/opencode/src/server/server.ts
+++ b/packages/opencode/src/server/server.ts
@@ -2657,12 +2657,44 @@ export namespace Server {
},
)
.all("/*", async (c) => {
- return proxy(`https://app.opencode.ai${c.req.path}`, {
+ const path = c.req.path
+ const response = await proxy(`https://app.opencode.ai${path}`, {
...c.req,
headers: {
host: "app.opencode.ai",
},
})
+ // Cloudflare doesn't return Content-Type for static assets, so we need to add it
+ const mimeTypes: Record<string, string> = {
+ ".js": "application/javascript",
+ ".mjs": "application/javascript",
+ ".css": "text/css",
+ ".json": "application/json",
+ ".wasm": "application/wasm",
+ ".svg": "image/svg+xml",
+ ".png": "image/png",
+ ".jpg": "image/jpeg",
+ ".jpeg": "image/jpeg",
+ ".gif": "image/gif",
+ ".ico": "image/x-icon",
+ ".webp": "image/webp",
+ ".woff": "font/woff",
+ ".woff2": "font/woff2",
+ ".ttf": "font/ttf",
+ ".eot": "application/vnd.ms-fontobject",
+ }
+ for (const [ext, mime] of Object.entries(mimeTypes)) {
+ if (path.endsWith(ext)) {
+ const headers = new Headers(response.headers)
+ headers.set("Content-Type", mime)
+ return new Response(response.body, {
+ status: response.status,
+ statusText: response.statusText,
+ headers,
+ })
+ }
+ }
+ return response
}),
)