Next.js 的 middleware 是什么?用于哪些场景?

middleware.ts 运行在请求到达页面/API 之前(Edge Runtime),可对请求做拦截/改写/重定向,性能极高。

// middleware.ts(根目录或 src/)
import { NextResponse } from 'next/server'
export function middleware(req: NextRequest) {
  const token = req.cookies.get('token')
  if (!token) return NextResponse.redirect(new URL('/login', req.url))
  return NextResponse.next()
}
export const config = { matcher: ['/dashboard/:path*'] }  // 只对匹配路径生效

场景:登录鉴权、A/B 测试分流、国际化(根据 Accept-Language 改写路径)、防盗链、请求头注入。

注意 middleware 跑在 Edge(轻量、无 Node API),重计算应放页面/API 路由。

同分类其他题目