Cookie 在本地主机上工作正常,但在 vercel 生产上无法工作

问题描述 投票:0回答:1

我正在中间件中设置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=&timestamp=`;
  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 setcookie nextjs13
1个回答
0
投票

这是 Vercel 导致的问题...您必须使用“POST”请求来访问注销端点。如果您发送“GET”请求,它将不起作用。希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.