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
相关产品推荐
相关产品推荐

