如何使用NodeJS连接从请求中提取请求http头

我想要获得使用Node JS的连接库包的请求的“主机”头。 我的代码如下所示:

var app = connect() .use(connect.logger('dev')) .use(connect.static('public')) .use(function(req, res){ var host = req.??? }) .listen(3000); 

连接的文档在这里,但是我没有看到任何细节在上面的代码中的req对象的API。 http://www.senchalabs.org/connect/

编辑 :注意一个成功的答案必须指向文档(我需要这个来validation哪个版本提供了我正在寻找的API)。

如果您使用Express 4.x,则可以使用Express 4.x API Reference中所述的req.get(headerName)方法

检查console.log(req)console.log(req.headers);

看看你的请求头可以使用什么:

 console.log(JSON.stringify(req.headers)); 

它会返回你这样的事情:

 { "host":"localhost:8081", "connection":"keep-alive", "cache-control":"max-age=0", "accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "upgrade-insecure-requests":"1", "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36", "accept-encoding":"gzip, deflate, sdch", "accept-language":"en-US,en;q=0.8,et;q=0.6" } 
 var host = req.headers['host']; 

标题存储在JavaScript对象中,标题string作为对象键。

同样,用户代理标题也可以用

 var userAgent = req.headers['user-agent']; 

我从一本着名的Oreilly书中find了一个简单的解决scheme。 使用Node和Express进行Web开发:在请求头中利用JavaScript堆栈 。 路线是模拟,你可以使用自己的应用程序路线,但原则是一样的。

 app.get('/mockREQHeaderReader', function(req, res){ res.set('Content-Type', 'text/plain'); var s = ""; for (var name in req.header) s += name + ': ' + req.header[name] + '\n'; req.send(s); });