diff --git a/packages/next/src/server/lib/router-utils/resolve-routes.ts b/packages/next/src/server/lib/router-utils/resolve-routes.ts index 7f6ce8f045cd1..c2f07cd06a17c 100644 --- a/packages/next/src/server/lib/router-utils/resolve-routes.ts +++ b/packages/next/src/server/lib/router-utils/resolve-routes.ts @@ -9,7 +9,6 @@ import url from 'url' import { Redirect } from '../../../../types' import setupDebug from 'next/dist/compiled/debug' import { getCloneableBody } from '../../body-streams' -import { filterReqHeaders, ipcForbiddenHeaders } from '../server-ipc/utils' import { Header } from '../../../lib/load-custom-routes' import { stringifyQuery } from '../../server-route-utils' import { formatHostname } from '../format-hostname' @@ -457,7 +456,7 @@ export function getResolveRoutes( const { res: mockedRes } = await createRequestResponseMocks({ url: req.url || '/', method: req.method || 'GET', - headers: filterReqHeaders(invokeHeaders, ipcForbiddenHeaders), + headers: invokeHeaders, resWriter(chunk) { readableController.enqueue(Buffer.from(chunk)) return true @@ -560,7 +559,7 @@ export function getResolveRoutes( delete middlewareHeaders['x-middleware-next'] for (const [key, value] of Object.entries({ - ...filterReqHeaders(middlewareHeaders, ipcForbiddenHeaders), + ...middlewareHeaders, })) { if ( [ diff --git a/packages/next/src/server/lib/server-ipc/invoke-request.ts b/packages/next/src/server/lib/server-ipc/invoke-request.ts index 2377fde0b227f..7f0c6d720292a 100644 --- a/packages/next/src/server/lib/server-ipc/invoke-request.ts +++ b/packages/next/src/server/lib/server-ipc/invoke-request.ts @@ -1,6 +1,5 @@ import type { IncomingMessage } from 'http' import type { Readable } from 'stream' -import { filterReqHeaders, ipcForbiddenHeaders } from './utils' export const invokeRequest = async ( targetUrl: string, @@ -11,13 +10,10 @@ export const invokeRequest = async ( }, readableBody?: Readable | ReadableStream ) => { - const invokeHeaders = filterReqHeaders( - { - 'cache-control': '', - ...requestInit.headers, - }, - ipcForbiddenHeaders - ) as IncomingMessage['headers'] + const invokeHeaders = { + 'cache-control': '', + ...requestInit.headers, + } return await fetch(targetUrl, { headers: invokeHeaders as any as Headers, diff --git a/packages/next/src/server/lib/server-ipc/utils.ts b/packages/next/src/server/lib/server-ipc/utils.ts index 06a981d166bd0..18170b4c9a0ce 100644 --- a/packages/next/src/server/lib/server-ipc/utils.ts +++ b/packages/next/src/server/lib/server-ipc/utils.ts @@ -1,4 +1,4 @@ -export const ipcForbiddenHeaders = [ +export const actionsForbiddenHeaders = [ 'accept-encoding', 'keepalive', 'keep-alive', @@ -8,10 +8,7 @@ export const ipcForbiddenHeaders = [ 'connection', // marked as unsupported by undici: https://github.com/nodejs/undici/blob/c83b084879fa0bb8e0469d31ec61428ac68160d5/lib/core/request.js#L354 'expect', -] - -export const actionsForbiddenHeaders = [ - ...ipcForbiddenHeaders, + // action specific 'content-length', ] diff --git a/packages/next/src/server/next-server.ts b/packages/next/src/server/next-server.ts index 0691b388e9e2c..9f8c3c6ebc914 100644 --- a/packages/next/src/server/next-server.ts +++ b/packages/next/src/server/next-server.ts @@ -93,7 +93,6 @@ import { nodeFs } from './lib/node-fs-methods' import { getRouteRegex } from '../shared/lib/router/utils/route-regex' import { invokeRequest } from './lib/server-ipc/invoke-request' import { pipeReadable } from './pipe-readable' -import { filterReqHeaders, ipcForbiddenHeaders } from './lib/server-ipc/utils' import { createRequestResponseMocks } from './lib/mock-request' import { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers' import { signalFromNodeResponse } from './web/spec-extension/adapters/next-request' @@ -539,13 +538,12 @@ export default class NextNodeServer extends BaseServer { signal: signalFromNodeResponse(res.originalResponse), } ) - const filteredResHeaders = filterReqHeaders( - toNodeOutgoingHttpHeaders(invokeRes.headers), - ipcForbiddenHeaders + const nodeOutgoingHttpHeaders = toNodeOutgoingHttpHeaders( + invokeRes.headers ) - for (const key of Object.keys(filteredResHeaders)) { - newRes.setHeader(key, filteredResHeaders[key] || '') + for (const key of Object.keys(nodeOutgoingHttpHeaders)) { + newRes.setHeader(key, nodeOutgoingHttpHeaders[key] || '') } newRes.statusCode = invokeRes.status || 200