我有一个Next.js路由处理程序,它被外部支付API调用,使用POST方法在支付后重定向。在该路由处理程序中,我将用户重定向到不同的页面。结果,用户实际上被重定向到该页面,但使用POST方法,没有显示任何页面。我需要用GET方法把用户从POST路由处理程序重定向到另一个URL来获取页面内容。我该怎么做13岁?
这是我的代码
import { env } from "@/env.mjs";
import { NextResponse } from "next/server";
export async function POST(req: Request) {
return NextResponse.redirect(new URL(`${env.NEXT_PUBLIC_SITE_URL}/catalog`));
}
字符串
这里还有标题
的数据
1条答案
按热度按时间6jjcrrmo1#
我在文档中发现了一些有用的信息,关于初始方法保存的重定向。
为什么Next.js使用307和308?传统上,302用于临时重定向,301用于永久重定向,但许多浏览器将重定向的请求方法改为GET,而不管原始方法如何。例如,如果浏览器向POST /v1/users发出请求,返回状态代码302,位置为/v2/users,后续的请求可能是GET /v2/users而不是预期的POST /v2/users。Next.js使用307临时重定向和308永久重定向状态码来显式保留所使用的请求方法。
默认情况下,Next.js使用307和308状态进行临时和永久重定向,以防止将HTTP方法从当前方法更改为GET方法,就像它在301和302状态(旧的重定向状态)中一样。因此,为了防止保存方法,我更新了我的代码以使用状态302重定向,因此它会自动将方法更改为GET。
下面是更新的代码:
字符串