Capítulo 170 de 456
Estende a Web Response API nativa com métodos de conveniência para cookies, JSON, redirect, rewrite e continuação de roteamento em Proxy.
set, get, getAll, has, delete no header Set-Cookie da resposta.{ request: { headers } } pra forward de headers upstream.// redirect com querystring preservado
import { NextResponse } from 'next/server'
const loginUrl = new URL('/login', request.url)
loginUrl.searchParams.set('from', request.nextUrl.pathname)
return NextResponse.redirect(loginUrl)
// forward de headers upstream com allow-list defensiva
import { type NextRequest, NextResponse } from 'next/server'
function proxy(request: NextRequest) {
const incoming = new Headers(request.headers)
const forwarded = new Headers()
for (const [name, value] of incoming) {
const headerName = name.toLowerCase()
if (!headerName.startsWith('x-') && headerName !== 'authorization' && headerName !== 'cookie') {
forwarded.set(name, value)
}
}
return NextResponse.next({ request: { headers: forwarded } })
}
NextResponse.next({ headers }) (sem request:): envia headers do proxy pro client, o que pode sobrescrever Content-Type esperado pelo framework (ex.: Server Actions) e quebrar submissões/streaming. Use NextResponse.next({ request: { headers } }) para forward upstream.rewrite() proxeia a request mantendo a URL visível pro usuário; redirect() muda a URL visível.next({ request: { headers } }) é forward upstream (invisível ao client); next({ headers }) é forward pro client — quase sempre errado.authorization/cookie/headers x-* arbitrários sem necessidade explícita.NextResponse.next()/rewrite().