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

如何在NextJS中间件中解析并获取Cookie值?

在Next.js中间件中正确解析并获取Cookie值

在Next.js的Edge中间件中,request.cookies是Next.js封装的RequestCookies对象,并非普通键值对对象,直接打印会显示内部结构,导致你看到{ cookie: 'cookie=value; Path=/' }这类输出。以下是几种无需第三方库的原生解决方案:

方案1:使用Next.js原生RequestCookies API

直接利用get()方法获取单个Cookie值,或通过forEach()遍历所有Cookie:

export function middleware(request) {
  if (request.nextUrl.pathname.startsWith('/nesto')) {
    // 获取指定名称的Cookie值
    const targetCookieValue = request.cookies.get('cookie')?.value;
    console.log(targetCookieValue); // 输出对应的value

    // 遍历所有Cookie,转为普通键值对对象
    const allCookies = {};
    request.cookies.forEach((value, name) => {
      allCookies[name] = value;
    });
    console.log(allCookies); // 输出{ cookie: 'value', ...其他Cookie }
  }
}

方案2:手动解析Cookie请求头

如果需要更灵活的处理,可以直接从请求头中获取原始Cookie字符串并手动解析:

export function middleware(request) {
  const cookieHeader = request.headers.get('cookie');
  if (cookieHeader) {
    // 解析为键值对对象
    const cookies = Object.fromEntries(
      cookieHeader.split('; ').map(cookie => cookie.split('='))
    );
    console.log(cookies.cookie); // 输出对应的value
  }
}

为什么第三方库无法使用

你尝试的cookie-parser、next-cookies等库大多依赖Node.js核心API,而Next.js中间件运行在Edge Runtime(而非Node.js环境),这类API在Edge环境中不可用,因此会出现解析失败的情况。优先使用上述原生方法即可解决问题。

内容的提问来源于stack exchange,提问作者Ivan Makevic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:55:19