mirror of
https://github.com/cloudflare/vinext.git
synced 2026-05-09 08:25:34 +02:00
[PR #809] [MERGED] fix: apply middleware request-header overrides to App Route request objects #861
Labels
No labels
enhancement
enhancement
good first issue
help wanted
nextjs-tracking
nextjs-tracking
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/vinext#861
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/cloudflare/vinext/pull/809
Author: @southpolesteve
Created: 4/9/2026
Status: ✅ Merged
Merged: 4/10/2026
Merged by: @james-elicx
Base:
main← Head:fix/app-route-request-sees-middleware-overrides📝 Commits (3)
cfcfeb8fix: apply middleware request-header overrides to App Route request objects4bdca8cchore: trigger fresh CI run for PR #80960c4910regen snaps📊 Changes
7 files changed (+94 additions, -11 deletions)
View changed files
📝
packages/vinext/src/entries/app-rsc-entry.ts(+5 -1)📝
packages/vinext/src/server/app-route-handler-execution.ts(+2 -0)📝
packages/vinext/src/server/app-route-handler-runtime.ts(+36 -3)📝
tests/__snapshots__/entry-templates.test.ts.snap(+15 -6)📝
tests/app-router.test.ts(+19 -0)➕
tests/fixtures/app-basic/app/api/header-override-delete/route.ts(+15 -0)📝
tests/fixtures/app-basic/middleware.ts(+2 -1)📄 Description
Summary
App Route handlers now receive a request object rebuilt from middleware request-header overrides, so
request.headersandheaders()agree after middleware mutations.Details
Middleware request-header overrides were already applied to the
next/headersALS context, soheaders()reflected the middleware-modified request state. But App Route handlers still received a trackedNextRequestbuilt from the original request object, sorequest.headersexposed the pre-middleware Authorization/Cookie headers.This change:
x-middleware-*headers are stripped for response safetyRequestwithbuildRequestHeadersFromMiddlewareResponse()before constructing the trackedNextRequestTests
Adds an App Route fixture and integration test proving that after middleware deletes credential headers and injects
x-from-middleware, both:request.headersheaders()see the same middleware-modified values.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.