@@ -38,7 +38,7 @@ import { PagesManifest } from '../build/webpack/plugins/pages-manifest-plugin'
3838import { recursiveReadDirSync } from './lib/recursive-readdir-sync'
3939import { format as formatUrl , UrlWithParsedQuery } from 'url'
4040import compression from 'next/dist/compiled/compression'
41- import Proxy from 'next/dist/compiled/http-proxy'
41+ import HttpProxy from 'next/dist/compiled/http-proxy'
4242import { route } from './router'
4343import { run } from './web/sandbox'
4444
@@ -73,6 +73,7 @@ import { loadEnvConfig } from '@next/env'
7373import { getCustomRoute } from './server-route-utils'
7474import { urlQueryToSearchParams } from '../shared/lib/router/utils/querystring'
7575import ResponseCache from '../server/response-cache'
76+ import { clonableBodyForRequest } from './body-streams'
7677
7778export * from './base-server'
7879
@@ -485,7 +486,7 @@ export default class NextNodeServer extends BaseServer {
485486 parsedUrl . search = stringifyQuery ( req , query )
486487
487488 const target = formatUrl ( parsedUrl )
488- const proxy = new Proxy ( {
489+ const proxy = new HttpProxy ( {
489490 target,
490491 changeOrigin : true ,
491492 ignorePath : true ,
@@ -1236,6 +1237,11 @@ export default class NextNodeServer extends BaseServer {
12361237
12371238 const allHeaders = new Headers ( )
12381239 let result : FetchEventResult | null = null
1240+ const method = ( params . request . method || 'GET' ) . toUpperCase ( )
1241+ let originalBody =
1242+ method !== 'GET' && method !== 'HEAD'
1243+ ? clonableBodyForRequest ( params . request . body )
1244+ : undefined
12391245
12401246 for ( const middleware of this . middleware || [ ] ) {
12411247 if ( middleware . match ( params . parsedUrl . pathname ) ) {
@@ -1245,7 +1251,6 @@ export default class NextNodeServer extends BaseServer {
12451251 }
12461252
12471253 await this . ensureMiddleware ( middleware . page , middleware . ssr )
1248-
12491254 const middlewareInfo = this . getMiddlewareInfo ( middleware . page )
12501255
12511256 result = await run ( {
@@ -1254,14 +1259,15 @@ export default class NextNodeServer extends BaseServer {
12541259 env : middlewareInfo . env ,
12551260 request : {
12561261 headers : params . request . headers ,
1257- method : params . request . method || 'GET' ,
1262+ method,
12581263 nextConfig : {
12591264 basePath : this . nextConfig . basePath ,
12601265 i18n : this . nextConfig . i18n ,
12611266 trailingSlash : this . nextConfig . trailingSlash ,
12621267 } ,
12631268 url : url ,
12641269 page : page ,
1270+ body : originalBody ?. cloneBodyStream ( ) ,
12651271 } ,
12661272 useCache : ! this . nextConfig . experimental . runtime ,
12671273 onWarning : ( warning : Error ) => {
@@ -1298,6 +1304,8 @@ export default class NextNodeServer extends BaseServer {
12981304 }
12991305 }
13001306
1307+ originalBody ?. finalize ( )
1308+
13011309 return result
13021310 }
13031311
0 commit comments