Skip to content

Commit

Permalink
fix(30724): clear "x-middleware-next" header when chaining middlewares (
Browse files Browse the repository at this point in the history
#30866)

* fix(30724): clear "x-middleware-next" header when chaining middlewares

* refactor: do not accumulate "x-middleware-next" header

* test: fix grammar of test case title

* Update packages/next/server/next-server.ts

Co-authored-by: Javi Velasco <javier.velasco86@gmail.com>
  • Loading branch information
hi-ogawa and javivelasco committed Nov 12, 2021
1 parent d9fc3ee commit 4a22059
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
4 changes: 3 additions & 1 deletion packages/next/server/next-server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -700,7 +700,9 @@ export default class Server {
})

for (let [key, value] of result.response.headers) {
allHeaders.append(key, value)
if (key !== 'x-middleware-next') {
allHeaders.append(key, value)
}
}

if (!this.renderOpts.dev) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { NextResponse } from 'next/server'

export async function middleware(request, _event) {
if (request.nextUrl.searchParams.get('deep-intercept') === 'true') {
return new NextResponse('intercepted!')
}
const next = NextResponse.next()
next.headers.set('x-deep-header', 'valid')
next.headers.append('x-append-me', 'deep')
Expand Down
8 changes: 8 additions & 0 deletions test/integration/middleware/core/test/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,14 @@ function responseTests(locale = '') {
'foo=oatmeal',
])
})

it(`${locale} should be intercepted by deep middleware`, async () => {
const res = await fetchViaHTTP(
context.appPort,
`${locale}/responses/deep?deep-intercept=true`
)
expect(await res.text()).toBe('intercepted!')
})
}

function interfaceTests(locale = '') {
Expand Down

0 comments on commit 4a22059

Please sign in to comment.