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

使用cookies-next的setCookie将URL参数token设为Cookie失败求助

解决cookies-next的setCookie在getServerSideProps中无法设置Cookie的问题

你遇到的问题核心是在服务器端调用setCookie时没有传入响应对象res,cookies-next在服务端环境下必须依赖res来操作HTTP响应头,才能把Cookie发送给浏览器。

修改后的代码

import { setCookie } from "cookies-next";
import { ParsedUrlQuery } from "querystring";

function CallbackPage() {
  return null;
}

export async function getServerSideProps({
  query,
  res,
}: {
  query: ParsedUrlQuery;
  res: any;
}) {
  const { token } = query;
  if (!token) {
    return {
      redirect: {
        source: ",",
        destination: "https://youtube.com", //example
        permanent: false,
        basePath: false,
      },
    };
  } else {
    // 关键:传入res参数,让setCookie能操作响应头
    setCookie("token", token as string, { res });
    return {
      redirect: {
        destination: "/",
        permanent: false,
      },
    };
  }
}

export default CallbackPage;

为什么之前的代码不生效?

在Next.js的getServerSideProps里,服务器端代码需要通过res对象来写入HTTP响应头。cookies-next的setCookie方法在服务端运行时,必须拿到res才能添加Set-Cookie响应头,没有这个参数的话,方法相当于空执行,不会对浏览器产生任何Cookie设置指令。

另外要注意:必须在返回redirect之前完成Cookie设置,因为redirect会立即发送响应,之后再调用setCookie就来不及修改响应头了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:59:57