不使用Express时如何查看request库发起请求的请求头
非Express场景下获取request库请求头的方法
你之前检索到的Express相关方案,针对的是Express服务端接收客户端请求时,读取入站请求头的场景;你现在是用request库作为HTTP客户端发起出站请求,查看自身发出的请求头完全不需要依赖任何Web框架,直接从回调参数中就能拿到。
核心实现逻辑
request库发起请求后的回调中,第二个参数res是服务端返回的响应对象,该对象挂载的request属性对应当前实际发起的请求实例,其上的headers字段就是最终发送到服务端的完整请求头——既包含你手动配置的头字段,也包含request库自动补全的默认头(比如User-Agent、Host、Connection等)。
修改后的示例代码如下:
const request = require('request'); function getDegree(cityURL){ request.get({ url: cityURL }, (err, res, body)=>{ if (err) { console.log(err); return } // 直接读取实际发出的完整请求头 const requestHeader = res.request.headers; // 打印请求头即可 console.log(requestHeader); // 你的常规业务代码 // console.log(temps); }) }
补充调试技巧
- 不要在发起请求前读取你传入request配置项里的
headers字段,那里只会保留你手动设置的头内容,没有库自动填充的默认字段,不是最终实际发送的完整请求头。 - 如果需要批量调试所有request请求的报文(不止单个请求的头),不需要在每个请求回调里加打印逻辑,启动脚本时带上环境变量即可:
NODE_DEBUG=request node 你的脚本文件名.js
运行后控制台会自动输出所有request请求的完整信息,包含请求行、请求头、响应头、响应报文等内容,适合全局排查问题。
内容的提问来源于stack exchange,提问作者genzowakabayashi
相关产品推荐
相关产品推荐

