首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs request.header dosnt存在

nodejs request.header dosnt存在
EN

Stack Overflow用户
提问于 2012-09-24 05:54:31
回答 1查看 7.3K关注 0票数 7

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

typeof request.header返回undefined

然而,我的request.headers是一个包含一些信息的对象:

代码语言:javascript
复制
{ 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 (运行node的台式机IP ),我得到了192.168.0.13:8000。所以不是给我客户端的IP地址,而是我用来指向应用程序的IP地址。

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

那么,什么才是正确的方法呢?为什么request.header对我来说不存在?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-24 06:03:22

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

代码语言:javascript
复制
req.ip
// => "127.0.0.1"

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

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
request.headers
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12556588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档