From 701eaad92a908e73c87461c4cd70768c429fdb35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samy=20Pess=C3=A9?= Date: Tue, 4 Mar 2025 10:00:08 +0100 Subject: [PATCH] Fix use of server actions with proxied domains by using middleware (#2913) --- packages/gitbook-v2/next.config.mjs | 6 ------ packages/gitbook-v2/src/middleware.ts | 7 ++++++- packages/gitbook/e2e/customers.spec.ts | 5 ----- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/gitbook-v2/next.config.mjs b/packages/gitbook-v2/next.config.mjs index acf792d56..f3d6ae78e 100644 --- a/packages/gitbook-v2/next.config.mjs +++ b/packages/gitbook-v2/next.config.mjs @@ -6,12 +6,6 @@ const nextConfig = { experimental: { useCache: true, - serverActions: { - // Allow all origins for server actions - // as we serve content on a lot of domains - // Server actions are secured by the middleware. - allowedOrigins: ['*', '*.*', '*.*.*', '*.*.*.*', '*.*.*.*.*'], - }, }, env: { diff --git a/packages/gitbook-v2/src/middleware.ts b/packages/gitbook-v2/src/middleware.ts index 60e5abe8d..97f523435 100644 --- a/packages/gitbook-v2/src/middleware.ts +++ b/packages/gitbook-v2/src/middleware.ts @@ -77,6 +77,10 @@ async function serveSiteByURL(request: NextRequest, urlWithMode: URLWithMode) { } } + // Pass a x-forwarded-host and origin that are equal to ensure Next doesn't block server actions when proxied + requestHeaders.set('x-forwarded-host', request.nextUrl.host); + requestHeaders.set('origin', request.nextUrl.origin); + const route = [ 'sites', routeType, @@ -87,7 +91,8 @@ async function serveSiteByURL(request: NextRequest, urlWithMode: URLWithMode) { console.log(`rewriting to ${route}`); - const response = NextResponse.rewrite(new URL(`/${route}`, request.url), { + const rewrittenURL = new URL(`/${route}`, request.nextUrl.toString()); + const response = NextResponse.rewrite(rewrittenURL, { request: { headers: requestHeaders, }, diff --git a/packages/gitbook/e2e/customers.spec.ts b/packages/gitbook/e2e/customers.spec.ts index 6e2dc2054..ee1aa4433 100644 --- a/packages/gitbook/e2e/customers.spec.ts +++ b/packages/gitbook/e2e/customers.spec.ts @@ -225,11 +225,6 @@ const testCases: TestsCase[] = [ baseUrl: 'https://docs.raydium.io', tests: [{ name: 'Home', url: '/' }], }, - { - name: 'docs.solv.finance', - baseUrl: 'https://docs.solv.finance', - tests: [{ name: 'Home', url: '/' }], - }, { name: 'docs.fluentbit.io', baseUrl: 'https://docs.fluentbit.io',