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