File tree 4 files changed +22
-12
lines changed
4 files changed +22
-12
lines changed Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import type { NextUrlWithParsedQuery } from '../../request-meta'
12
12
import url from 'url'
13
13
import setupDebug from 'next/dist/compiled/debug'
14
14
import { getCloneableBody } from '../../body-streams'
15
+ import { filterReqHeaders , ipcForbiddenHeaders } from '../server-ipc/utils'
15
16
import { stringifyQuery } from '../../server-route-utils'
16
17
import { formatHostname } from '../format-hostname'
17
18
import { toNodeOutgoingHttpHeaders } from '../../web/utils'
@@ -457,7 +458,7 @@ export function getResolveRoutes(
457
458
const { res : mockedRes } = await createRequestResponseMocks ( {
458
459
url : req . url || '/' ,
459
460
method : req . method || 'GET' ,
460
- headers : invokeHeaders ,
461
+ headers : filterReqHeaders ( invokeHeaders , ipcForbiddenHeaders ) ,
461
462
resWriter ( chunk ) {
462
463
readableController . enqueue ( Buffer . from ( chunk ) )
463
464
return true
@@ -560,7 +561,7 @@ export function getResolveRoutes(
560
561
delete middlewareHeaders [ 'x-middleware-next' ]
561
562
562
563
for ( const [ key , value ] of Object . entries ( {
563
- ...middlewareHeaders ,
564
+ ...filterReqHeaders ( middlewareHeaders , ipcForbiddenHeaders ) ,
564
565
} ) ) {
565
566
if (
566
567
[
Original file line number Diff line number Diff line change 1
1
import type { IncomingMessage } from 'http'
2
2
import type { Readable } from 'stream'
3
+ import { filterReqHeaders , ipcForbiddenHeaders } from './utils'
3
4
4
5
export const invokeRequest = async (
5
6
targetUrl : string ,
@@ -10,10 +11,13 @@ export const invokeRequest = async (
10
11
} ,
11
12
readableBody ?: Readable | ReadableStream
12
13
) => {
13
- const invokeHeaders = {
14
- 'cache-control' : '' ,
15
- ...requestInit . headers ,
16
- }
14
+ const invokeHeaders = filterReqHeaders (
15
+ {
16
+ 'cache-control' : '' ,
17
+ ...requestInit . headers ,
18
+ } ,
19
+ ipcForbiddenHeaders
20
+ ) as IncomingMessage [ 'headers' ]
17
21
18
22
return await fetch ( targetUrl , {
19
23
headers : invokeHeaders as any as Headers ,
Original file line number Diff line number Diff line change 1
- export const actionsForbiddenHeaders = [
1
+ export const ipcForbiddenHeaders = [
2
2
'accept-encoding' ,
3
3
'keepalive' ,
4
4
'keep-alive' ,
@@ -8,7 +8,10 @@ export const actionsForbiddenHeaders = [
8
8
'connection' ,
9
9
// marked as unsupported by undici: https://github.com/nodejs/undici/blob/c83b084879fa0bb8e0469d31ec61428ac68160d5/lib/core/request.js#L354
10
10
'expect' ,
11
- // action specific
11
+ ]
12
+
13
+ export const actionsForbiddenHeaders = [
14
+ ...ipcForbiddenHeaders ,
12
15
'content-length' ,
13
16
]
14
17
Original file line number Diff line number Diff line change @@ -93,6 +93,7 @@ import { nodeFs } from './lib/node-fs-methods'
93
93
import { getRouteRegex } from '../shared/lib/router/utils/route-regex'
94
94
import { invokeRequest } from './lib/server-ipc/invoke-request'
95
95
import { pipeReadable } from './pipe-readable'
96
+ import { filterReqHeaders , ipcForbiddenHeaders } from './lib/server-ipc/utils'
96
97
import { createRequestResponseMocks } from './lib/mock-request'
97
98
import { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers'
98
99
import { signalFromNodeResponse } from './web/spec-extension/adapters/next-request'
@@ -549,12 +550,13 @@ export default class NextNodeServer extends BaseServer {
549
550
signal : signalFromNodeResponse ( res . originalResponse ) ,
550
551
}
551
552
)
552
- const nodeOutgoingHttpHeaders = toNodeOutgoingHttpHeaders (
553
- invokeRes . headers
553
+ const filteredResHeaders = filterReqHeaders (
554
+ toNodeOutgoingHttpHeaders ( invokeRes . headers ) ,
555
+ ipcForbiddenHeaders
554
556
)
555
557
556
- for ( const key of Object . keys ( nodeOutgoingHttpHeaders ) ) {
557
- newRes . setHeader ( key , nodeOutgoingHttpHeaders [ key ] || '' )
558
+ for ( const key of Object . keys ( filteredResHeaders ) ) {
559
+ newRes . setHeader ( key , filteredResHeaders [ key ] || '' )
558
560
}
559
561
newRes . statusCode = invokeRes . status || 200
560
562
You can’t perform that action at this time.
0 commit comments