如何为传入的HTTP请求添加标头?

Jan*_*bel 2 connect node.js

我正在为node.js开发一个Connect中间件,需要为传入请求添加HTTP头.

这样的东西似乎有效:

function authorize_request(req, res, next) {
  //...
  req.headers['remote-user'] =  user;
  next();
}
Run Code Online (Sandbox Code Playgroud)

问题是请求是一个实例http.IncomingMessage,并且headers属性被记录为只读:

这是一种向请求添加标头的允许方式,还是在某些情况下会失败?有没有更好的办法?

mok*_*oka 5

如果您需要将一些内部信息传递给下一个中间件,只需使用对象而不是实际的头文件.
修改标头不是一个好习惯,因为其他模块可以依赖它,它会搞砸它们.

function authorize(req, res, next) {
  // ...
  req.data = req.data || { };
  req.data.remoteUser = user;
  next();
}
Run Code Online (Sandbox Code Playgroud)