Skip to content

Commit f0fd496

Browse files
authored
Revert "Fix running server with Polyfilled fetch (#31935)" (#32100)
This reverts commit 1c199a5.
1 parent b194664 commit f0fd496

File tree

12 files changed

+163
-283
lines changed

12 files changed

+163
-283
lines changed

packages/next/server/next-server.ts

+15-35
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ import { parseNextUrl } from '../shared/lib/router/utils/parse-next-url'
9595
import isError from '../lib/is-error'
9696
import { getMiddlewareInfo } from './require'
9797
import { MIDDLEWARE_ROUTE } from '../lib/constants'
98+
import { NextResponse } from './web/spec-extension/response'
9899
import { run } from './web/sandbox'
99100
import { addRequestMeta, getRequestMeta } from './request-meta'
100101
import { toNodeHeaders } from './web/utils'
101-
import { relativizeURL } from '../shared/lib/router/utils/relativize-url'
102102

103103
const getCustomRouteMatcher = pathMatch(true)
104104

@@ -384,13 +384,7 @@ export default class Server {
384384
parsedUrl.query = parseQs(parsedUrl.query)
385385
}
386386

387-
// When there are hostname and port we build an absolute URL
388-
const initUrl =
389-
this.hostname && this.port
390-
? `http://${this.hostname}:${this.port}${req.url}`
391-
: req.url
392-
393-
addRequestMeta(req, '__NEXT_INIT_URL', initUrl)
387+
addRequestMeta(req, '__NEXT_INIT_URL', req.url)
394388
addRequestMeta(req, '__NEXT_INIT_QUERY', { ...parsedUrl.query })
395389

396390
const url = parseNextUrl({
@@ -673,14 +667,6 @@ export default class Server {
673667
}): Promise<FetchEventResult | null> {
674668
this.middlewareBetaWarning()
675669

676-
// For middleware to "fetch" we must always provide an absolute URL
677-
const url = getRequestMeta(params.request, '__NEXT_INIT_URL')!
678-
if (!url.startsWith('http')) {
679-
throw new Error(
680-
'To use middleware you must provide a `hostname` and `port` to the Next.js Server'
681-
)
682-
}
683-
684670
const page: { name?: string; params?: { [key: string]: string } } = {}
685671
if (await this.hasPage(params.parsedUrl.pathname)) {
686672
page.name = params.parsedUrl.pathname
@@ -695,6 +681,8 @@ export default class Server {
695681
}
696682
}
697683

684+
const subreq = params.request.headers[`x-middleware-subrequest`]
685+
const subrequests = typeof subreq === 'string' ? subreq.split(':') : []
698686
const allHeaders = new Headers()
699687
let result: FetchEventResult | null = null
700688

@@ -714,6 +702,14 @@ export default class Server {
714702
serverless: this._isLikeServerless,
715703
})
716704

705+
if (subrequests.includes(middlewareInfo.name)) {
706+
result = {
707+
response: NextResponse.next(),
708+
waitUntil: Promise.resolve(),
709+
}
710+
continue
711+
}
712+
717713
result = await run({
718714
name: middlewareInfo.name,
719715
paths: middlewareInfo.paths,
@@ -725,7 +721,7 @@ export default class Server {
725721
i18n: this.nextConfig.i18n,
726722
trailingSlash: this.nextConfig.trailingSlash,
727723
},
728-
url: url,
724+
url: getRequestMeta(params.request, '__NEXT_INIT_URL')!,
729725
page: page,
730726
},
731727
useCache: !this.nextConfig.experimental.concurrentFeatures,
@@ -1185,13 +1181,9 @@ export default class Server {
11851181
type: 'route',
11861182
name: 'middleware catchall',
11871183
fn: async (req, res, _params, parsed) => {
1188-
if (!this.middleware?.length) {
1189-
return { finished: false }
1190-
}
1191-
1192-
const initUrl = getRequestMeta(req, '__NEXT_INIT_URL')!
1184+
const fullUrl = getRequestMeta(req, '__NEXT_INIT_URL')
11931185
const parsedUrl = parseNextUrl({
1194-
url: initUrl,
1186+
url: fullUrl,
11951187
headers: req.headers,
11961188
nextConfig: {
11971189
basePath: this.nextConfig.basePath,
@@ -1230,18 +1222,6 @@ export default class Server {
12301222
return { finished: true }
12311223
}
12321224

1233-
if (result.response.headers.has('x-middleware-rewrite')) {
1234-
const value = result.response.headers.get('x-middleware-rewrite')!
1235-
const rel = relativizeURL(value, initUrl)
1236-
result.response.headers.set('x-middleware-rewrite', rel)
1237-
}
1238-
1239-
if (result.response.headers.has('Location')) {
1240-
const value = result.response.headers.get('Location')!
1241-
const rel = relativizeURL(value, initUrl)
1242-
result.response.headers.set('Location', rel)
1243-
}
1244-
12451225
if (
12461226
!result.response.headers.has('x-middleware-rewrite') &&
12471227
!result.response.headers.has('x-middleware-next') &&

packages/next/server/web/adapter.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import type { NextMiddleware, RequestData, FetchEventResult } from './types'
2-
import type { RequestInit } from './spec-extension/request'
32
import { DeprecationError } from './error'
43
import { fromNodeHeaders } from './utils'
54
import { NextFetchEvent } from './spec-extension/fetch-event'
6-
import { NextRequest } from './spec-extension/request'
5+
import { NextRequest, RequestInit } from './spec-extension/request'
76
import { NextResponse } from './spec-extension/response'
87
import { waitUntilSymbol } from './spec-compliant/fetch-event'
98

@@ -12,9 +11,13 @@ export async function adapter(params: {
1211
page: string
1312
request: RequestData
1413
}): Promise<FetchEventResult> {
14+
const url = params.request.url.startsWith('/')
15+
? `https://${params.request.headers.host}${params.request.url}`
16+
: params.request.url
17+
1518
const request = new NextRequestHint({
1619
page: params.page,
17-
input: params.request.url,
20+
input: url,
1821
init: {
1922
geo: params.request.geo,
2023
headers: fromNodeHeaders(params.request.headers),

0 commit comments

Comments
 (0)