2013-07-08 64 views
2

我正在为node.js连接中间件,这需要将HTTP头添加到传入的请求中。如何将头添加到传入的HTTP请求?

像这样的事情似乎工作:

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

的问题是,该请求是http.IncomingMessage一个实例,标题属性为documented to be read only

这是增加了头部的允许的方式到一个请求还是会在某些情况下失败?有没有更好的办法?

+0

没有理由编辑请求头,只有响应头。将变量传递给其他中间件或代码的其他部分应该由放置在响应中的另一个对象完成。 – gillyb

回答

5

如果您需要将一些内部信息传递到下一个中​​间件,只需使用对象而不是实际的标头。
修改头文件并不是一个好习惯,因为其他模块可以依赖这个头文件,并且会混淆它。

function authorize(req, res, next) { 
    // ... 
    req.data = req.data || { }; 
    req.data.remoteUser = user; 
    next(); 
} 
+0

向请求对象添加一个属性是一个不错的方法,这对我来说很有意义。尽管我可以看到一些情况,修改头文件是一件合理的事情(比如说处理'主机'头文件的中间件)。修改/添加标题与修改Connect支持的请求路径非常相似。 –