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

Next.js Middlewares报错URLs is malformed请仅使用绝对URL

报错原因

NextResponse.redirect() 方法强制要求传入绝对URL作为跳转目标,你的代码中直接传入了相对路径"/login",不符合参数规则,因此触发格式错误报错。
你代码中已经从req.nextUrl解构拿到了当前请求的origin(站点域名+协议部分),可以直接用它拼接生成合法的跳转地址。

修复代码

将重定向逻辑改为通过new URL()构造绝对地址即可,修改后完整代码:

const token = await getToken({req,secret:process.env.JWT_SECRET});

const {pathname, origin} = req.nextUrl;

if(pathname?.includes('/api/auth') || token){
    return NextResponse.next();
};

if (!token && pathname !== "/login") {
    return NextResponse.redirect(new URL('/login', origin));
}
注意事项
  • 不要直接用字符串模板拼接${origin}/login传入,通过new URL()构造地址会自动处理origin末尾斜杠、特殊字符转义等边界问题,兼容性更好。
  • 后续中间件里的其他重定向逻辑,都要遵循「必须传绝对URL」的规则,避免同类报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:27:10