在 app 或者 pages 同级创建文件 middleware.js
中间件有两种写法,可用于匹配:
1、matcher 配置项
匹配规则:
/about/:path* 匹配 /about、/about/xxx、/about/xxx/xxx
/about/:path? 匹配 /about、/about/xxx
/about/:path+ 匹配 /about/xxx、/about/xxx/xxx
也可以在圆括号中使用标准的正则表达式:
/about/(.*) <=> /about/:path*
/(about|settings) 匹配 /about 和 /settings
/user-(a|b) 匹配 /user-a 和 /user-b
有个常用的匹配规则记录一下:
matcher 除了可以匹配路径,还可以匹配参数:
2、条件语句
直接在逻辑里写,这种比较方便
读取和设置 cookies:
对于传入的参数:提供了 get、getAll、set 和 delete 来处理 cookies,也可以用 has 来检查 cookies,用 clear 来删除所有的 cookies:
用 const response = NextResponse.next() 可以拿到响应内容,同样可以在里面设置 cookies:
设置成功:
读取和设置 headers:
取 request 的 headers:
const requestHeader = new Headers(request.headers)
设置 responese 的请求头:
为 NextResponse.rewrite 写请求头:
执行顺序:
相关配置:
skipTrailingSlashRedirect:
使用 Middleware 的时候还要注意一点,那就是目前 Middleware 只支持 Edge runtime,并不支持 Node.js runtime。这意味着写 Middleware 的时候,尽可能使用 Web API,避免使用 Node.js API