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

Next.js中getServerSideProps获取token cookie返回undefined问题求解

问题原因

你设置Cookie的代码存在语法错误,配置项传参位置错误导致Token Cookie根本没有被正确写入浏览器,因此后续请求中自然无法读取到对应的token字段。

cookie.serialize方法接收3个参数,分别是Cookie名称、Cookie值、配置项,你当前将配置项单独传给了res.setHeader,配置完全未生效。

修复步骤

1. 修正登录接口Cookie设置逻辑

将原登录接口中设置Set-Cookie的代码替换为如下内容:

res.setHeader('Set-Cookie',
    cookie.serialize('token', data.jwt, {
        httpOnly: true,
        maxAge: 60 * 60 * 24 * 7,
        sameSite: 'strict',
        path: '/',
        // 开发环境下HTTP协议无需开启secure,生产环境HTTPS自动开启
        secure: process.env.NODE_ENV === 'production'
    })
)

2. 补充无Token时的跳转逻辑

在Dashboard的getServerSideProps中增加无Token时的跳转判断,避免无效请求:

export async function getServerSideProps({ req, res }) {
    const { token } = parseCookies(req)
    // 无Token直接跳转登录页
    if (!token) {
        return {
            redirect: {
                destination: '/login',
                permanent: false
            }
        }
    }

    const fetchRes = await fetch(`${API_URL}/events/me`,
        {
            method: 'GET',
            headers: {
                Authorization: `Bearer ${token}`
            }
        })

    const events = await fetchRes.json()

    return {
        props: {
            events
        }
    }
}

3. 本地验证

修复后清空浏览器现有Cookie,重新登录后再访问Dashboard页面即可正常读取到Token。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:15:04