From f69147604663a70c71c8c0e287fd2525b593fef1 Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Thu, 7 May 2026 22:25:39 +0700 Subject: [PATCH] fix: prevent encoding issues by removing problematic headers in relay responses --- src/app/api/relay/route.ts | 3 +++ src/lib/relay-utils.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/app/api/relay/route.ts b/src/app/api/relay/route.ts index 1dae00c..1cf4034 100644 --- a/src/app/api/relay/route.ts +++ b/src/app/api/relay/route.ts @@ -46,6 +46,9 @@ async function handler(req: Request): Promise { } const headers = filterHeaders(new Headers(req.headers)); + // Prevent compressed responses (gzip, br) that cause encoding bugs in relay + headers.delete("accept-encoding"); + const fetchOptions = buildRelayRequest(req, targetUrl, headers); const response = await fetch(targetUrl, fetchOptions); diff --git a/src/lib/relay-utils.ts b/src/lib/relay-utils.ts index 2c18e8a..6fbe16b 100644 --- a/src/lib/relay-utils.ts +++ b/src/lib/relay-utils.ts @@ -90,11 +90,14 @@ export function isAllowedTarget(url: string): boolean { export function createRelayResponse(response: Response): Response { const headers = new Headers(response.headers); + // Remove headers that would confuse the browser or were handled by the proxy headers.delete("content-encoding"); headers.delete("content-length"); headers.delete("transfer-encoding"); headers.delete("connection"); headers.delete("keep-alive"); + headers.delete("x-frame-options"); // Allow embedding if needed + headers.delete("content-security-policy"); // Add CORS for browser UI headers.set("Access-Control-Allow-Origin", "*");