如何使用NodeJS connect从请求中提取请求http标头

时间:2012-10-30 21:15:13

标签: node.js

我想获得使用Node JS的连接库捆绑包发出的请求的“主机”标头。我的代码如下:

var app = connect()
  .use(connect.logger('dev'))
  .use(connect.static('public'))
  .use(function(req, res){

    var host = req.???

  })
 .listen(3000);

connect的文档在这里,但我没有看到任何详细说明上述代码中req对象的API的内容。 http://www.senchalabs.org/connect/

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

6 个答案:

答案 0 :(得分:283)

如果您使用Express 4.x,则可以使用Express 4.x API Reference

中所述的req.get(headerName)方法

答案 1 :(得分:134)

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

的输出

答案 2 :(得分:134)

要查看HTTP请求标头列表,您可以使用:

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

以JSON格式返回列表。

{
"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"
}

答案 3 :(得分:46)

var host = req.headers['host']; 

标题存储在JavaScript对象中,标题字符串作为对象键。

同样,可以使用

获取用户代理标头
var userAgent = req.headers['user-agent']; 

答案 4 :(得分:0)

仅在前端使用

axios.get(url, {headers : {Authorization:承载$ {token} } }).then(....

以及后端:

  

:我在节点Express后端的res.setHeader()中添加了OPTIONS和Authorization

res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,OPTIONS,Accept,Authorization, X-Requested-With, Content-Type, Access-Control-Request-Method, Access- Control-Request-Headers');

这确实解决了我的问题,希望您能这样做。

答案 5 :(得分:0)

LINQ

输出;

logger.info({headers:req.headers})