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

Node.js响应头传递对象显示[object object]问题排查求助

为什么响应头传递对象显示[object Object]?

嘿,这个问题我之前踩过坑!核心原因很明确:HTTP响应头的所有值都只能是字符串类型。你直接把pagination对象传给setHeader,后端会自动调用对象的默认toString()方法,而普通JavaScript对象的toString()返回值就是[object Object],这就是你看到这个结果的根源,而且这个过程不会抛出任何错误——因为它是合法的字符串转换。

解决办法分两步走:

  • 后端把对象转成JSON字符串
    修改你的服务端代码,用JSON.stringify()把对象序列化为JSON字符串后再设置响应头:

    const pagination = { 'pageSize': 25, 'someInformation': 'blablabla...' };
    res.header('Access-Control-Expose-Headers', 'X-Pagination');
    // 关键:将对象转为JSON字符串
    res.setHeader('X-Pagination', JSON.stringify(pagination));
    
  • 前端把字符串解析回对象
    前端拿到响应头的值后,需要用JSON.parse()把字符串反序列化为对象才能正常使用:

    // 示例:用fetch请求的情况
    fetch('/your-api-path')
      .then(response => {
        const paginationStr = response.headers.get('X-Pagination');
        // 建议加try-catch避免解析失败报错
        try {
          const pagination = JSON.parse(paginationStr);
          console.log('分页信息:', pagination);
        } catch (err) {
          console.error('解析分页信息失败:', err);
        }
      });
    

额外提醒:

如果你的对象里包含特殊字符(比如换行、引号),JSON.stringify()会自动处理这些字符,确保它们能安全地在响应头中传输,不用额外担心编码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:29:07