如何使用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); });