nodejs request.header dosnt存在

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

typeof request.header返回undefined

不过,我有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' } 

东道主的价值似乎值得检查。 运行在本地主机节点显然返回127.0.0.1:8000 ,但后来我试图从我的上网本在同一个networking上,指向192.168.0.13(我的桌面IP在哪个节点正在运行)访问我的node.js站点,我得到了192.168.0.13:8000 。 所以它不给我的客户端IP,而是使用哪个IP来指向应用程序。

我尝试了request.connection.remoteAddress因为它通过我find的教程命名。 从本地运行得到127.0.0.1 ,从我的上网本192.168.0.12 。 所以它的工作! 192.168.0.12是我的上网本IP。 但通过教程和问题,我发现他们说,正确的方法将是第一个,取决于如果代理是你的或不。

那么怎样才能做到这一点呢? 为什么request.header不存在我?

如果你使用快递3,你可以这样做:

 req.ip // => "127.0.0.1" 

http://expressjs.com/api.html#req.ip

如果你想要其他的头文件,你可以使用这个:

 req.get(field) req.get('Content-Type'); // => "text/plain" req.get('content-type'); // => "text/plain" req.get('Something'); // => undefined 

http://expressjs.com/api.html#req.get

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

 request.headers