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

Next.js Middleware中访问request.headers报错问题求助

Next.js Middleware 中 request.headers 访问问题解决
  • 直接打印 request.headers 报错原因
    Next.js Middleware 里的 request.headers 是标准 Web API 的 Headers 对象,并非普通 JS 对象。直接用 console.log 打印时,会触发内部属性序列化逻辑,其中 Symbol(set-cookie) 属性不可删除,因此抛出 TypeError。

  • 正确打印 headers 的方式
    需要把 Headers 对象转换成可打印的格式,比如数组或普通对象:

    // 转为数组打印
    console.log(Array.from(request.headers.entries()));
    // 转为普通对象打印
    console.log(Object.fromEntries(request.headers.entries()));
    
  • 获取 referer 头的正确方法
    不能直接通过属性访问(request.headers.referer),必须使用 Headers 对象的 get() 方法,HTTP 头名称不区分大小写:

    console.log(request.headers.get('referer'));
    // 部分场景可使用标准拼写 'referrer'
    console.log(request.headers.get('referrer'));
    
  • 修正后的完整中间件代码

    export function middleware(request) {
        console.log(request.credentials); // 正常输出 same-origin
        console.log(request.method); // 正常输出 GET
    
        // 正确打印 headers
        console.log(Object.fromEntries(request.headers.entries()));
        // 正确获取 referer
        console.log(request.headers.get('referer'));
    }
    
    export const config = {
        matcher: "/:path*/generate",
    };
    

内容的提问来源于stack exchange,提问作者Kuli Uploader

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:18:20