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

Next.js服务端POST接口无法重定向问题求助

问题分析与修复方案

你的代码存在两个核心问题导致重定向失败:

问题1:未正确使用重定向API且存在未导入变量

你导入了next/navigation的redirect函数,但却使用了未导入的NextResponse对象,这会触发NextResponse is not defined的错误,直接导致重定向逻辑失效。

问题2:App Router路由处理函数的重定向方式错误

在Next.js App Router的POST路由处理函数中,重定向有两种正确的实现方式,二选一即可:

方案1:使用redirect函数(推荐)

redirect是App Router专为服务器端路由处理设计的API,调用后会自动抛出重定向响应,无需return:

import { redirect } from 'next/navigation';

export async function POST(request) {
    try {
        const formData = await request.formData()
        console.log(formData)

        // 直接调用redirect完成重定向
        redirect(`${process.env.BOOKING_URL}/booking-confirmed`);
    } catch (error) {
        console.log(error)
        // 可添加错误场景的重定向
        redirect('/booking-error');
    }
}

方案2:使用NextResponse.redirect

若要使用NextResponse,必须先从next/server导入,且需传入URL对象(新版本Next.js推荐):

import { NextResponse } from 'next/server';

export async function POST(request) {
    try {
        const formData = await request.formData()
        console.log(formData)

        return NextResponse.redirect(new URL(`${process.env.BOOKING_URL}/booking-confirmed`));
    } catch (error) {
        console.log(error)
        return NextResponse.redirect(new URL('/booking-error'));
    }
}

额外检查点

  • 确认process.env.BOOKING_URL环境变量已正确配置,且值包含完整协议(如https://your-domain.com)
  • 检查浏览器控制台或服务器日志是否有未捕获的错误,避免错误被吞导致重定向逻辑未执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:40:03