Node.js nodejs request.header dosnt存在

Node.js nodejs request.header dosnt存在,node.js,Node.js,看到了很多关于从NodeJS获取客户端IP地址的教程、文章和stackoverflow问题。 几乎所有人都使用这个request.header('x-forwarded-for') 我的NodeJS v0.8.7没有该request.header函数 typeof request.header返回未定义的 但是,我有request.headers,它是一个包含一些信息的对象: { host: '127.0.0.1:8000', connection: 'keep-alive', acce

看到了很多关于从NodeJS获取客户端IP地址的教程、文章和stackoverflow问题。 几乎所有人都使用这个
request.header('x-forwarded-for')
我的
NodeJS v0.8.7
没有该request.header函数

typeof request.header
返回
未定义的

但是,我有request.headers,它是一个包含一些信息的对象:

{ host: '127.0.0.1:8000',
  connection: 'keep-alive',
  accept: '*/*',
  'user-agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1',
  'accept-encoding': 'gzip,deflate,sdch',
  'accept-language': 'en-US,en;q=0.8',
  'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' }
主机值似乎值得检查。在本地主机上运行node显然返回了
127.0.0.1:8000
,但随后我尝试从同一网络上的上网本访问node.js站点,指向192.168.0.13(运行节点的桌面IP),得到了
192.168.0.13:8000
。因此,它不是给我客户端IP,而是我使用哪个IP指向应用程序

然后我尝试了
request.connection.remoteAddress
,因为它是在我找到的教程中命名的。从localhost运行得到了
127.0.0.1
,从我的上网本运行得到了
192.168.0.12
。所以成功了!192.168.0.12是我的上网本IP。 但是在我发现的教程和问题中,他们说正确的方法是第一种,这取决于代理是否是你的


那么,正确的方法是什么呢?为什么我看不到request.header?

如果您使用的是express 3,您可以这样做:

req.ip
// => "127.0.0.1"

如果需要其他标题,可以使用以下内容:

req.get(field)

req.get('Content-Type');
// => "text/plain"

req.get('content-type');
// => "text/plain"

req.get('Something');
// => undefined
request.headers

如果您使用的是普通节点,请使用以下命令:

req.get(field)

req.get('Content-Type');
// => "text/plain"

req.get('content-type');
// => "text/plain"

req.get('Something');
// => undefined
request.headers