You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Next.js中间件中通过NextResponse返回410状态码?

实现Next.js中间件直接返回410永久失效响应(不修改URL)

当前代码的问题

你的代码存在两处问题:

  • 语法错误:mime: "application/text"!中的!属于多余的无效语法,会导致代码报错
  • 参数错误:NextResponse.respond的配置项中没有mime字段,应该通过headers设置响应的Content-Type

正确实现方式

以下是修正后的代码,完全满足你的需求——直接返回410响应,不修改或重定向URL,跳过页面构建阶段:

import { NextRequest, NextResponse } from 'next/server';

export function middleware(request: NextRequest) {
  const { pathname } = request.nextUrl;
  // 匹配包含指定文本的失效URL
  if (pathname.includes("some text")) {
    return NextResponse.respond("", {
      status: 410,
      headers: {
        "Content-Type": "text/plain",
      },
    });
  }
  // 非匹配请求继续正常处理
  return NextResponse.next();
}

替代方案(兼容性更强)

如果遇到NextResponse.respond的版本兼容问题,可以直接返回原生Response实例,效果完全一致:

import { NextRequest } from 'next/server';

export function middleware(request: NextRequest) {
  const { pathname } = request.nextUrl;
  if (pathname.includes("some text")) {
    return new Response("", {
      status: 410,
      headers: {
        "Content-Type": "text/plain",
      },
    });
  }
  return NextResponse.next();
}

效果说明

上述两种写法都会直接向客户端返回410状态码和空响应体,不会改变请求URL,同时会终止后续的页面构建流程,有效减少无效资源消耗,完全符合你的需求。

内容的提问来源于stack exchange,提问作者user254694

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:54:53