如何为现有Node.js接口请求添加指定Headers?
适配后的路由实现
你当前的代码是Express 后端的路由处理函数,无需使用浏览器Fetch API的new Headers()构造器,直接通过Express响应对象内置的res.set()方法即可批量设置要求的响应头,完整代码如下:
const getUsers = async (req, res) => { try { const data = await ContactUser.find() // 在发送响应前批量配置所有要求的响应头 res.set({ 'Accept': 'application/json', 'Access-Control-Expose-Headers': 'Content-Range', 'Content-Range': 'users 0-20/20' }) return res.status(200).json({ data }) } catch (err) { return res.status(200).json({ err: "Server error" }) } };
配置对应逻辑说明
- 参考示例中的
Accept: 'application/json'是前端Fetch的请求头语法,在Express中直接作为响应头配置即可,和你当前返回JSON的接口逻辑完全匹配 Access-Control-Expose-Headers: Content-Range是跨域场景的必需配置,缺少这一项的话,前端跨域请求时无法通过JS读取到自定义的Content-Range头Content-Range: users 0-20/20按你指定的固定值配置即可,后续接入动态分页逻辑时,可以直接替换成根据分页参数计算出的动态范围字符串
关键注意点:Express 中所有响应头的设置必须在调用
res.json()/res.send()这类发送响应的方法之前完成,否则框架会直接忽略后续的头设置操作,导致配置不生效。如果需要让错误响应也统一携带指定头配置,可以把res.set()的逻辑移到try块最外层,覆盖全量响应场景。
内容的提问来源于stack exchange,提问作者Thess
相关产品推荐
相关产品推荐

