我正在中间件中设置cookie:
export function middleware(req: NextRequest) {
const cookie = req.cookies.get("app_id")?.value;
if (cookie) return NextResponse.next();
const requestHeaders = new Headers(req.headers);
const app_id: string | undefined = requestHeaders.get("host")?.split(".")[0];
requestHeaders.set("app_id", app_id?.toString() || "");
const response = NextResponse.next({
request: {
headers: requestHeaders,
},
});
response.cookies.set("app_id", app_id || "");
return response;
}
现在我在应用程序目录中有一个页面,我在其中使用下一个标头和cookie来获取app_id,它在本地主机上运行良好,但在vercel生产上不起作用。
页面代码:
async function fetchMethod(category_id: string | number | boolean) {
const url = "https:/rest_api";
const cookieStore = cookies();
const header = headers();
const app_id_cookie =
cookieStore.get("app_id")?.value || header.get("Cookie")?.split("=")[1];
console.log(app_id_cookie);
const bodyData = `contact_id=&category=×tamp=`;
const response = await fetch(`${url}/?app_id=${app_id_cookie}`, {
method: "POST",
body: bodyData,
headers: {
accept: "application/json",
"Content-Type": " application/x-www-form-urlencoded",
},
cache: "force-cache",
});
return await response.json();
}
这是 Vercel 导致的问题...您必须使用“POST”请求来访问注销端点。如果您发送“GET”请求,它将不起作用。希望这有帮助。