2013-07-08 90 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支持的請求路徑非常相似。 –